home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / inter52a.zip / INTERRUP.C < prev    next >
Text File  |  1996-10-20  |  361KB  |  9,873 lines

  1. Interrupt List, part 3 of 15
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996 Ralf Brown
  3. --------T-1513-------------------------------
  4. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  5.     AH = 13h
  6.     STACK:    WORD    process ID
  7. Return: AX = status (SYS_OK or SYS_ERROR)
  8. SeeAlso: AH=12h"VMiX"
  9. --------T-1513-------------------------------
  10. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  11.     AH = 13h
  12. Return: BX:AX -> task control block (see #0360)
  13. SeeAlso: AH=15h"MultiDOS"
  14.  
  15. Format of MultiDOS Plus v4.0 task control block:
  16. Offset    Size    Description    (Table 0360)
  17.  00h    DWORD    pointer to next TCB
  18.  04h  8 BYTEs    ASCIZ task name
  19.  0Ch  2 BYTEs    ???
  20.  0Eh    WORD    task PSP segment
  21.  10h    WORD    abort/suspend flags
  22.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  23.  14h    WORD    priority level (0000h-FFFEh)
  24.  16h    WORD    time slice counter
  25.  18h  2 BYTEs    ???
  26.  1Ah    WORD    suspend timer value
  27.  1Ch    WORD    stack segment
  28.  1Eh    WORD    stack pointer
  29.  20h    WORD    display type
  30.  22h    WORD    display memory
  31.  24h  2 BYTEs    ???
  32.  26h    WORD    termination count
  33.  28h    WORD    equipment flag for BIO10 driver
  34.  2Ah    BYTE    background CRT mode
  35.  2Bh    WORD    screen width in columns
  36.  2Dh    WORD    screen size in bytes
  37.  2Fh    WORD    segment of physical screen memory
  38.  31h 16 BYTEs    eight cursor positions
  39.  41h    WORD    current cursor shape
  40.  43h    BYTE    active display page
  41.  44h    WORD    CRT controller I/O port base
  42.  46h  2 BYTEs    ???
  43.  48h    WORD    foreground task flag
  44.  4Ah  6 BYTEs    ???
  45.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  46.  52h    DWORD    old INT 22
  47.  56h    DWORD    old INT 23
  48.  5Ah    DWORD    old INT 24
  49.  5Eh    WORD    top of memory for task
  50.  60h  4 BYTEs    ???
  51.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  52.  66h    WORD    DTA offset
  53.  68h  4 BYTEs    ???
  54.  6Ch    BYTE    current ANSI.SYS attribute
  55.  6Dh    BYTE    current ANSI.SYS column
  56.  6Eh    BYTE    current ANSI.SYS row
  57.  6Fh    BYTE    current ANSI.SYS display state
  58.  70h    BYTE    maximum ANSI.SYS columns
  59.  71h    BYTE    current ANSI.SYS page
  60.  72h    WORD    saved ANSI.SYS cursor position
  61.  74h    BYTE    ANSI.SYS parameter buffer index
  62.  75h    BYTE    current ANSI.SYS screen mode
  63.  76h    BYTE    ANSI.SYS wrap flag
  64.  77h  6 BYTEs    ANSI.SYS parameter buffer
  65.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  66.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  67.  85h  3 BYTEs    ???
  68.  88h 16 BYTEs    request header for DOS driver calls
  69.  98h 14 BYTEs    ???
  70.  A6h    WORD    segment of EMS map if EMS task
  71.  A8h    WORD    flag: task makes EMS calls
  72.  AAh    WORD    EMS handle for task
  73.  ACh    WORD    keyboard shift state
  74.  AEh 12 BYTEs    ???
  75.  BAh    WORD    TCB of parent if child task
  76.  BCh    WORD    termination code
  77.  BEh    WORD    COM port number
  78.  C0h  4 BYTEs    ???
  79.  C4h    WORD    current IRQ number
  80.  C6h  2 BYTEs    ???
  81.  C8h    WORD    miscellaneous flag word
  82.  CAh  2 BYTEs    ???
  83.  CCh    DWORD    old INT 10
  84.  D0h    WORD    EMS alternate map set number
  85.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  86. --------T-1514-------------------------------
  87. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  88.     AH = 14h
  89.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  90.         WORD    bottom right corner of window (high = row, low = col)
  91. Return: AX = status (SYS_OK)
  92. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  93. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  94. --------T-1514-------------------------------
  95. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  96.     AH = 14h
  97. Return: AX = current state
  98.         0000h MultiDOS Plus command prompt is background task
  99.         0001h command prompt is foreground task
  100. SeeAlso: AH=0Bh"MultiDOS"
  101. --------T-1515-------------------------------
  102. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  103.     AH = 15h
  104.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  105. Return: AX = status (SYS_OK)
  106. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  107. --------T-1515-------------------------------
  108. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  109.     AH = 15h
  110. Return: BX:AX -> system block (see #0361)
  111. SeeAlso: AH=13h"MultiDOS"
  112.  
  113. Format of MultiDOS Plus 4.0 system block:
  114. Offset    Size    Description    (Table 0361)
  115.  00h    WORD    segment of system control block
  116.  02h    WORD    redirection flag set by /NOREDIRECT
  117.  04h    WORD    no-INT 10 flag set by /NO10
  118.  06h    DWORD    old INT 10
  119.  0Ah    DWORD    new INT 10
  120.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0360)
  121.  12h    DWORD    pointer to WORD with idle task TCB offset
  122.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0360)
  123.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0360)
  124.  1Eh    WORD    Task Control Block size
  125.  20h    WORD    number of TCBs
  126.  22h    WORD    flag: EMS present
  127.  24h    WORD    EMS page frame base segment
  128.  26h    WORD    16K pages in EMS page frame
  129.  28h    WORD    base segment for conventional memory tasks
  130.  2Ah    WORD    conventional memory size in paragraphs
  131.  2Ch    DWORD    pointer to list of queue pointers
  132. --------T-1516-------------------------------
  133. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  134.     AH = 16h
  135.     STACK:    DWORD    pointer to I/O Request Packet
  136.         WORD    top left corner of window (high byte = row, low = col)
  137.         WORD    bottom right corner of window (high = row, low = col)
  138. Return: AX = status (SYS_OK or SYS_ERROR)
  139. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  140. --------T-1516-------------------------------
  141. INT 15 - MultiDOS Plus - INITIALIZATION
  142.     AH = 16h
  143. Note:    used internally during initialization; any other calls will cause
  144.       unpredictable results
  145. --------T-1517-------------------------------
  146. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  147.     AH = 17h
  148. Return: AH = foreground color
  149.     AL = background color
  150. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  151. --------T-1517-------------------------------
  152. INT 15 - MultiDOS Plus - MAP IRQ
  153.     AH = 17h
  154.     AL = IRQ to map (01h-0Fh)
  155.     BX = offset of task control block (see #0360) to associate with IRQ
  156. Return: AX = status
  157.         0000h successful
  158.         other invalid IRQ
  159. Note:    the EMS map of the specified TCB is associated with the given interrupt
  160. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  161. --------T-1518-------------------------------
  162. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  163.     AH = 18h
  164.     STACK:    WORD    new background/foreground colors
  165.             bits 3-0: foreground
  166.             bits 7-4: background
  167.             bits 15-8: unused
  168. Return: AX = color
  169. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  170. --------T-1518-------------------------------
  171. INT 15 - MultiDOS Plus - UNMAP IRQ
  172.     AH = 18h
  173.     AL = IRQ to unmap (01h-0Fh)
  174. Return: AX = status
  175.         0000h successful
  176.         0001h invalid IRQ
  177. Note:    results are unpredictable if the IRQ has not been mapped
  178. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  179. --------T-1519-------------------------------
  180. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  181.     AH = 19h
  182.     STACK:    WORD    new background/foreground colors
  183.             bits 3-0: foreground
  184.             bits 7-4: background
  185.             bits 15-8: unused
  186. Return: AX = color
  187. SeeAlso: AH=18h"VMiX"
  188. --------T-1519-------------------------------
  189. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  190.     AH = 19h
  191. Return: AX destroyed
  192. Note:    for MultiDOS internal use only
  193. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  194. --------T-151A-------------------------------
  195. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  196.     AH = 1Ah
  197.     STACK:    WORD    interrupt number
  198.         DWORD    pointer to register structure
  199. Return: AX = returned flags
  200. --------T-151A-------------------------------
  201. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  202.     AH = 1Ah
  203.     DS:SI -> 8-byte name
  204. Return: AL = status
  205.         00h successful
  206.         AH = semaphore number (20h-3Fh)
  207.         04h out of string space
  208. Notes:    all eight bytes of the name are significant
  209.     if the name does not already exist, it is added to the name table and
  210.       associated with a free semaphore number
  211.     names cannot be destroyed
  212. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  213. --------T-151B-------------------------------
  214. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  215.     AH = 1Bh
  216.     STACK:    DWORD    source address
  217.         DWORD    destination address
  218.         WORD    number of words to move
  219. Return: nothing
  220. --------T-151B-------------------------------
  221. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  222.     AH = 1Bh
  223.     DS:SI -> 8-byte name
  224. Return: AH = status
  225.         00h successful
  226.         02h invalid semaphore number
  227.         03h caller already owns semaphore
  228.         04h out of string space
  229. Notes:    (see AH=01h"MultiDOS")
  230.     equivalent to AH=1Ah followed by AH=01h
  231. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  232. --------T-151C-------------------------------
  233. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  234.     AH = 1Ch
  235.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  236.         DWORD    pointer to object bitmap
  237.         WORD    object width in pixels
  238.         WORD    object height in pixels
  239. Return: nothing
  240. SeeAlso: AH=1Dh"VMiX"
  241. --------T-151C-------------------------------
  242. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  243.     AH = 1Ch
  244.     DS:SI -> 8-byte name
  245. Return: AH = status
  246.         00h successful
  247.         01h not semaphore owner
  248.         02h invalid semaphore number
  249.         04h out of string space
  250. Notes:    (see AH=02h"MultiDOS")
  251.     equivalent to AH=1Ah followed by AH=02h
  252. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  253. --------T-151D-------------------------------
  254. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  255.     AH = 1Dh
  256. Return: AX = current font number (00h-03h)
  257. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  258. --------T-151D-------------------------------
  259. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  260.     AH = 1Dh
  261.     DS:SI -> 8-byte name
  262. Return: AH = status
  263.         00h semaphore not in use
  264.         01h semaphore owned by another task
  265.         02h invalid semaphore number
  266.         03h caller owns semaphore
  267.         04h out of string space
  268. Notes:    (see AH=10h"MultiDOS")
  269.     equivalent to AH=1Ah followed by AH=10h
  270. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  271. --------T-151E-------------------------------
  272. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  273.     AH = 1Eh
  274.     STACK: WORD new font number (00h-03h)
  275. Return: AX = current font number (00h-03h)
  276. SeeAlso: AH=1Dh"VMiX"
  277. --------T-151E00-----------------------------
  278. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  279.     AX = 1E00h
  280.     DX = event/trigger number (00h-3Fh)
  281. Return: AH = status
  282.         00h successful
  283. SeeAlso: AX=1E01h,AX=1E02h
  284. --------T-151E01-----------------------------
  285. INT 15 - MultiDOS Plus - TRIGGER EVENT
  286.     AX = 1E01h
  287.     DX = event/trigger number (00h-3Fh)
  288. Return: AH = status
  289.         00h successful
  290.         01h invalid event/trigger number
  291. Notes:    schedules any task waiting for event; if no task is waiting, the event
  292.       counter is incremented (and will roll over if it was 65535)
  293.     may be invoked by interrupt handler
  294. SeeAlso: AX=1E00h,AX=1E02h
  295. --------T-151E02-----------------------------
  296. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  297.     AX = 1E02h
  298.     DX = event/trigger number (00h-3Fh)
  299. Return: AH = status
  300.         00h successful
  301.         01h invalid event/trigger number
  302. Note:    if the event counter is zero, the task is suspended until the event is
  303.       triggered with AX=1E01h; else, the counter is decremented and the
  304.       call returns immediately
  305. SeeAlso: AX=1E00h,AX=1E01h
  306. --------T-151E08-----------------------------
  307. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  308.     AX = 1E08h
  309.     DX:BX -> context save handler (see #0362)
  310.     DX:CX -> context restore handler (see #0362)
  311. Return: nothing
  312. Note:    handlers may be removed by setting addresses to 0000h:0000h
  313.  
  314. (Table 0362)
  315. Values MultiDOS Plus context-switch handlers are called with:
  316.     ES:BX -> task's TCB
  317. Return: all registers preserved
  318. --------T-151F-------------------------------
  319. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  320.     AH = 1Fh
  321.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  322.         WORD    bottom right corner of window
  323. Return: AX = status (SYS_OK)
  324. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  325. --------T-151F-------------------------------
  326. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  327.     AH = 1Fh
  328. Return: BX = first segment of conventional memory
  329.     DX = first segment of EMS swap frame into which MultiDOS will load
  330.         programs
  331. --------T-1520-------------------------------
  332. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  333.     AH = 20h
  334. Return: AX = current state
  335.         0000h multitasking enabled
  336.         other TCB of task that disabled multitasking
  337. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  338. --------c-152000-----------------------------
  339. INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  340.     AX = 2000h
  341. Return: nothing
  342. Desc:    stop setting user flag on entry to PRINT critical region
  343. Note:    also supported by PC Network v1.00 RECEIVER.COM
  344. SeeAlso: AX=2001h
  345. --------c-152001-----------------------------
  346. INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG
  347.     AX = 2001h
  348.     ES:BX -> byte which is to be incremented while in a DOS call
  349. Return: nothing
  350. Desc:    specify a user flag which PRINT should set to let an interested
  351.       application know it is in a critical region
  352. Note:    also supported by PC Network v1.00 RECEIVER.COM
  353. SeeAlso: AX=2000h
  354. --------O-152010-----------------------------
  355. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  356.     AX = 2010h
  357.     ???
  358. Return: ???
  359. SeeAlso: AX=2011h
  360. --------O-152011-----------------------------
  361. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  362.     AX = 2011h
  363.     ???
  364. Return: ???
  365. SeeAlso: AX=2010h
  366. --------B-1521-------------------------------
  367. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  368.     AH = 21h
  369.     AL = subfunction
  370.         00h read POST log
  371.         01h write POST log
  372.         BH = device ID
  373.         BL = error code
  374. Return: CF set on error
  375.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  376.     if function 00h:
  377.        BX = number of error codes stored
  378.        ES:DI -> error log
  379. Notes:    the log is a series of words, the first byte of which identifies the
  380.       error code and the second the device.
  381.     supported by AMI PCI BIOS
  382. --------B-1522-------------------------------
  383. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  384.     AH = 22h
  385. Return: CF set on error
  386.         AH = status (86h if function not supported)
  387.     CF clear on success
  388.         AH = 00h
  389.         ES:BX -> ROM BASIC
  390. Note:    if this function is not supported, ROM BASIC is at F600h:0000h
  391. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  392. --------B-152300-----------------------------
  393. INT 15 U - SYSTEM - PS/1s - GET ??? CMOS DATA
  394.     AX = 2300h
  395. Return: CF clear if successful
  396.         CL = value of CMOS location 2Dh
  397.         CH = value of CMOS location 2Eh
  398.     CF set on error
  399.         AH = error code (80h,86h)
  400. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  401. --------B-152301-----------------------------
  402. INT 15 U - SYSTEM - PS/1s - SET ??? CMOS DATA
  403.     AX = 2301h
  404.     CL = new value for CMOS location 2Dh
  405.     CH = new value for CMOS location 2Eh
  406. Return: CF clear if successful
  407.     CF set on error
  408.         AH = error code (80h,86h)
  409. Note:    sets the contents of CMOS locations 2Dh and 2Eh
  410. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  411. --------B-152302-----------------------------
  412. INT 15 U - SYSTEM - PS/1s - GET ROM STARTUP VIDEO REGISTER TABLES
  413.     AX = 2302h
  414.     BL = data index (00h-0Dh) (see #0363)
  415. Return: ES:BX -> table for register (see #0364,#0365)
  416.     CX = size of table in bytes (may be 0000h)
  417.  
  418. (Table 0363)
  419. Values for PS/1 ROM startup video register tables:
  420.  00h    DAC registers
  421.  01h    ???
  422.  02h    Palette registers
  423.  03h-0Dh ???
  424.  
  425. Format of PS/1 ROM startup DAC register table:
  426. Offset    Size    Description    (Table 0364)
  427.  00h    WORD    number of DAC registers in table
  428.  02h    var    array of 3-byte DAC register values, starting at register 00h
  429. SeeAlso: #0363
  430.  
  431. Format of PS/1 ROM startup Palette register table:
  432. Offset    Size    Description    (Table 0365)
  433.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  434.  10h    BYTE    border color
  435. SeeAlso: #0363,#0017
  436. --------B-152303-----------------------------
  437. INT 15 U - SYSTEM - PS/1s - ???
  438.     AX = 2303h
  439.     BX = ??? ('x')
  440.     DX = 'y' and 'z'
  441.         bits 15-7 = 'y'
  442.         bits 6-3 unused
  443.         bits 2-0 = 'z'
  444.     DI = ??? (0352h)
  445. Return: ???
  446. Note:    performs graphics functions, writes to segment A000h and VGA I/O ports
  447. --------B-152304-----------------------------
  448. INT 15 U - SYSTEM - PS/1s - SYSTEM SETUP
  449.     AX = 2304h
  450.     DX = segment of 32K buffer
  451. Return: CF clear if successful
  452.         AX = 0003h (left over from setting video mode 3)
  453.         BX,CX,DX,BP,DS,ES destroyed
  454.     CF set on error
  455.         AH = error code (80h,86h)
  456. SeeAlso: AX=2301h,AX=2305h
  457. --------B-152305-----------------------------
  458. INT 15 U - SYSTEM - PS/1s - GET PROCESSOR SPEED
  459.     AX = 2305h
  460. Return: CF clear if successful
  461.         AL = processor speed in MHz
  462.     CF set on error
  463.         AL = FFh (speed > 80 MHz)
  464.         AL = error code (80h,86h = unsupported function)
  465. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  466. --------b-152400-----------------------------
  467. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  468.     AX = 2400h
  469. Return: CF clear if successful
  470.         AH = 00h
  471.     CF set on error
  472.         AH = status
  473.         01h keyboard controller is in secure mode
  474.         86h function not supported
  475. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  476. BUG:    AMI BIOS v1.00.03.AV0M never reports an error on failure to disable
  477.       the A20 gate; it simply writes 0 to PORT 0092h
  478. SeeAlso: AX=2401h,AX=2402h,AX=2403h,PORT 0092h
  479. --------b-152401-----------------------------
  480. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  481.     AX = 2401h
  482. Return: CF clear if successful
  483.         AH = 00h
  484.     CF set on error
  485.         AH = status
  486.         01h keyboard controller is in secure mode
  487.         86h function not supported
  488. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  489. SeeAlso: AX=2400h,AX=2402h,PORT 0092h
  490. --------b-152402-----------------------------
  491. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  492.     AX = 2402h
  493. Return: CF clear if successful
  494.         AH = 00h
  495.         AL = current state (00h disabled, 01h enabled)
  496.         CX = ??? (set to 0000h-000Bh or FFFFh by AMI BIOS v1.00.03.AV0M)
  497.         FFFFh if keyboard controller does not become ready within C000h
  498.              read attempts
  499.     CF set on error
  500.         AH = status
  501.         01h keyboard controller is in secure mode
  502.         86h function not supported
  503. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  504. SeeAlso: AX=2400h,AX=2401h
  505. --------b-152403-----------------------------
  506. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  507.     AX = 2403h
  508. Return: CF clear if successful
  509.         AH = 00h
  510.         BX = status of A20 gate support (see #0366)
  511.     CF set on error
  512.         AH = status
  513.         01h keyboard controller is in secure mode
  514.         86h function not supported
  515. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  516. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  517.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  518.       thus causing a random branch on any value of AL greater than 3.
  519. SeeAlso: AX=2402h
  520.  
  521. Bitfields for A20 gate support status:
  522. Bit(s)    Description    (Table 0366)
  523.  0    supported on keyboard controller
  524.  1    supported with bit 1 of I/O port 92h
  525.  15    additional data is available (location not yet defined)
  526. --------T-153000-----------------------------
  527. INT 15 - Object Kernel for DOS - INSTALLATION CHECK
  528.     AX = 3000h
  529. Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
  530.         CX = resident segment
  531. Program: the Object Kernel is a program by M.W. Pieters which is currently
  532.       under development
  533. Note:    Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it
  534.       may be checking for a different program's presence
  535. SeeAlso: AX=3001h,AX=3008h
  536. --------T-153001-----------------------------
  537. INT 15 - Object Kernel for DOS - GET STATUS BLOCK
  538.     AX = 3001h
  539. Return: AX = FFFFh
  540.     ES:DI -> status block
  541. SeeAlso: AX=3000h,AX=3008h
  542. --------T-153002-----------------------------
  543. INT 15 - Object Kernel for DOS - KILL PROCESS
  544.     AX = 3002h
  545.     (not yet implemented)
  546. SeeAlso: AX=3000h
  547. --------T-153003-----------------------------
  548. INT 15 - Object Kernel for DOS - STOP PROCESS
  549.     AX = 3003h
  550.     (not yet implemented)
  551. SeeAlso: AX=3000h
  552. --------T-153004-----------------------------
  553. INT 15 - Object Kernel for DOS - START PROCESS
  554.     AX = 3004h
  555.     (not yet implemented)
  556. SeeAlso: AX=3000h
  557. --------T-153005-----------------------------
  558. INT 15 - Object Kernel for DOS - RESTART PROCESS
  559.     AX = 3005h
  560.     (not yet implemented)
  561. SeeAlso: AX=3000h
  562. --------T-153006-----------------------------
  563. INT 15 - Object Kernel for DOS - EXECUTE PROCESS
  564.     AX = 3006h
  565.     (not yet implemented)
  566. SeeAlso: AX=3000h
  567. --------T-153007-----------------------------
  568. INT 15 - Object Kernel for DOS - LIST PROCESSES
  569.     AX = 3007h
  570.     (not yet implemented)
  571. SeeAlso: AX=3000h
  572. --------T-153008-----------------------------
  573. INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
  574.     AX = 3008h
  575.     BH = new state (00h disabled, 01h enabled)
  576. Return: AX = FFFFh
  577. SeeAlso: AX=3000h,AX=3009h
  578. --------T-153009-----------------------------
  579. INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
  580.     AX = 3009h to 30FFh
  581. SeeAlso: AX=3000h
  582. Program: the Object Kernel is a program by M.W. Pieters which is currently
  583.       under development
  584. --------B-1540-------------------------------
  585. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  586.     AH = 40h
  587.     AL = subfunction
  588.         00h get system profile in CX and BX
  589.         01h set system profile from CX and BX
  590.         02h get internal modem profile in BX
  591.         03h set internal modem profile from BX
  592. Return: CF clear if successful
  593.         AH = 00h
  594.     CF set on error
  595.         AH = status (80h = profile execution failed)
  596. --------V-154000-----------------------------
  597. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  598.     AX = 4000h
  599. Return: AX = 4000h
  600.     CL = timeout in minutes, 00h if disabled
  601. SeeAlso: AX=4001h,AX=4600h
  602. --------V-154001-----------------------------
  603. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  604.     AX = 4001h
  605.     CL = timeout in minutes, 00h to disable
  606. Return: AL = status
  607.         00h timeout modified
  608.         01h timeout cannot be modified
  609.         40h timeout cannot be modified
  610.     CL = timeout in minutes, 00h if disabled
  611. SeeAlso: AX=4000h,AX=4601h
  612. --------B-1541-------------------------------
  613. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  614.     AH = 41h
  615.     AL = condition type (see #0367)
  616.     BH = condition compare or mask value
  617.     BL = timeout value times 55 milliseconds
  618.         00h means no timeout
  619.     DX = I/O port address if AL bit 4 set
  620.     ES:DI -> user byte if AL bit 4 clear
  621. Return: after event or timeout occurs
  622. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  623.       this function is supported
  624. SeeAlso: AH=83h,AH=86h,AH=C0h
  625.  
  626. Bitfields for external event wait condition type:
  627. Bit(s)    Description    (Table 0367)
  628.  0-2    condition to wait for
  629.     0 any external event
  630.     1 compare and return if equal
  631.     2 compare and return if not equal
  632.     3 test and return if not zero
  633.     4 test and return if zero
  634.  3    reserved
  635.  4    1=port address, 0=user byte
  636.  5-7    reserved
  637. --------B-1542-------------------------------
  638. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  639.     AH = 42h
  640.     AL = suspend type
  641.         00h to use system profile
  642.         01h to force suspend regardless of system profile
  643. Return: nothing
  644. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  645.       power-up, execution will resume following the instruction calling
  646.       this function
  647. SeeAlso: AH=44h
  648. --------b-154280-----------------------------
  649. INT 15 - Compaq SLT/286 - ENTER STANDBY
  650.     AX = 4280h
  651. Return: AH = 42h
  652.     CF clear if successful
  653.     CF set if unable to enter standby
  654. SeeAlso: AX=4600h,AX=5307h/CX=0001h"STAND-BY"
  655. --------B-1543-------------------------------
  656. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  657.     AH = 43h
  658. Return: AL = status bits (see #0368)
  659.  
  660. Bitfields for Convertible system status:
  661. Bit(s)    Description    (Table 0368)
  662.  7    power low
  663.  6    external power in use
  664.  5    standby power lost
  665.  4    power activated by alarm
  666.  3    internal modem powered on
  667.  2    RS232/parallel adapter powered on
  668.  1    reserved
  669.  0    LCD detached
  670. --------B-1544-------------------------------
  671. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  672.     AH = 44h
  673.     AL = new modem power state (00h power off, 01h power on)
  674. Return: nothing
  675. SeeAlso: AH=42h
  676. --------b-1544C0-----------------------------
  677. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  678.     AX = 44C0h
  679.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  680.     ES:SI -> ??? buffer
  681. Return: ES:DI -> old DSP procedure
  682.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  683.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  684. Note:    this function is also supported by XBIOS.COM
  685. SeeAlso: AX=44C9h
  686. --------b-1544C1-----------------------------
  687. INT 15 - Olivetti Quaderno - ???
  688.     AX = 44C1h
  689.     ???
  690. Return: ???
  691. Note:    this function is also supported by XBIOS.COM
  692. SeeAlso: AX=44C9h
  693. --------b-1544C2-----------------------------
  694. INT 15 - Olivetti Quaderno - ???
  695.     AX = 44C2h
  696.     DL = byte to be written to I/O port 350h
  697. Note:    this function is also supported by XBIOS.COM
  698. SeeAlso: AX=44C3h,AX=44C9h
  699. --------b-1544C3-----------------------------
  700. INT 15 - Olivetti Quaderno - GET ???
  701.     AX = 44C3h
  702. Return: DH = bitfields (see #0369)
  703.     DL = value read from I/O port 350h
  704. Note:    this function is also supported by XBIOS.COM
  705. SeeAlso: AX=44C2h,AX=44C9h
  706.  
  707. Bitfields for Olivetti Quaderno ???:
  708. Bit(s)    Description    (Table 0369)
  709.  5-7    5-7 read from I/O port 351h
  710.  2-4    zero
  711.  1-0    "tres complique"
  712. --------b-1544C4-----------------------------
  713. INT 15 - Olivetti Quaderno - ???
  714.     AX = 44C4h and 44C5h
  715.     ???
  716. Return: ???
  717. Note:    this function is also supported by XBIOS.COM
  718. SeeAlso: AX=44C9h
  719. --------b-1544C6-----------------------------
  720. INT 15 - Olivetti Quaderno - READ LCD
  721.     AX = 44C6h
  722. Return: DX = FFFFh clock is displayed on LCD display
  723.     DX = other: hex number displayed in first four positions of display
  724.     BH = left alphanumeric character on display (see #0370)
  725.     BL = right alphanumeric character on display (see #0370)
  726.     CL = colon flags (see #0371)
  727. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  728.       is an alphanumeric character
  729.     this function is also supported by XBIOS.COM
  730. SeeAlso: AX=44C7h,AX=44C9h
  731.  
  732. (Table 0370)
  733. Values for Olivetti Quaderno LCD alphanumeric characters:
  734.  00h-0Fh hex digit
  735.  2Bh    "+"
  736.  2Dh    "-"
  737.  30h-39h "0" to "9"
  738.  41h-5Ah "A" to "Z"
  739.  61h-6Ah "a" to "z"
  740.  else    blank
  741.  
  742. Bitfields for Olivetti Quaderno LCD colon flags:
  743. Bit(s)    Description    (Table 0371)
  744.  0    left colon on
  745.  1    right colon on
  746.  2-7    unused
  747. --------b-1544C7-----------------------------
  748. INT 15 - Olivetti Quaderno - WRITE LCD
  749.     AX = 44C7h
  750.     DX = hex display
  751.         FFFFh display clock and "HI", "Md", or "Lo"
  752.         BH,BL,CL unused
  753.         other: display specified hex number in first four positions
  754.         BH = left alphanumeric character on display (see #0370)
  755.         BL = right alphanumeric character on display (see #0370)
  756.         CL = colon flags (see #0371)
  757. Return: nothing
  758. Note:    this function is also supported by XBIOS.COM
  759. SeeAlso: AX=44C6h
  760. --------b-1544C8-----------------------------
  761. INT 15 - Olivetti Quaderno - ???
  762.     AX = 44C8h
  763.     CL = ??? (00h,02h,21h)
  764.     CH = ???
  765.     ???
  766. Return: ???
  767. Note:    this function is also supported by XBIOS.COM
  768. SeeAlso: AX=44C9h
  769. --------b-1544C9-----------------------------
  770. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  771.     AX = 44C9h
  772. Return: AL = major version
  773.     AH = minor version
  774. Note:    this function is also supported by XBIOS.COM
  775. --------B-1544F1-----------------------------
  776. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  777.     AX = 44F1h
  778.     DS:DX -> byte with 00h ???
  779. Return: ???
  780. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  781.       between USER and SUPERVISOR security level
  782. SeeAlso: AX=44F2h,AX=44F3h
  783. --------B-1544F2BX0604-----------------------
  784. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  785.     AX = 44F2h
  786.     BX = 0604h ???
  787. Return: CF = ???
  788.     AH = ???
  789.     DX = ???
  790. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  791.       between USER and SUPERVISOR security level
  792. SeeAlso: AX=44F1h,AX=44F3h
  793. --------B-1544F3-----------------------------
  794. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  795.     AX = 44F3h
  796.     DS:DX -> byte with 00h or 01h ???
  797. Return: DS:DX -> changed ???
  798. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  799.       between USER and SUPERVISOR security level
  800. SeeAlso: AX=44F1h,AX=44F2h
  801. --------b-1545-------------------------------
  802. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS
  803.     AH = 45h
  804.     AL = new display control status
  805.         bit 0: DISPCTL flag +C instead of -C
  806.         bit 1: DISPCTL flag +K instead of -K
  807. SeeAlso: AH=46h"HP",AH=47h"HP"
  808. --------b-1546-------------------------------
  809. INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
  810.     AH = 46h
  811.     BX = timeout value in ticks
  812.         0000h inhibit auto power off
  813. Note:    the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
  814. SeeAlso: AH=45h"HP",AH=47h"HP"
  815. --------b-154600-----------------------------
  816. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  817.     AX = 4600h
  818. Return: AH = modem configuration information (see #0372)
  819.     AL = power conservation status information (see #0373)
  820.     BH = default system inactivity timeout (1-21 minutes)
  821.     BL = current system inactivity timeout (1-21 minutes)
  822.     CH = default video display inactivity timeout (1-63 minutes)
  823.     CL = current video display inactivity timeout (1-63 minutes)
  824.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  825.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  826. SeeAlso: AX=4280h,AX=4601h,INT 77
  827.  
  828. Bitfields for Compaq SLT/286 modem configuration information:
  829. Bit(s)    Description    (Table 0372)
  830.  0    powerup state (0 off, 1 on)
  831.  1    modem installed
  832.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  833.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  834.  4    modem state (0 not assigned, 1 assigned)
  835.  5    modem is on
  836.  
  837. Bitfields for Compaq SLT/286 power conservation status:
  838. Bit(s)    Description    (Table 0373)
  839.  0    power source (0 internal, 1 external)
  840.  1-2    low battery state
  841.     00 no low battery condition
  842.     01 low battery 1
  843.     10 reserved
  844.     11 low battery 2
  845.  3-4    power conservation mode
  846.     00 automatic, 01 on, 10 off, 11 reserved
  847. --------b-154601-----------------------------
  848. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  849.     AX = 4601h
  850.     BL = system inactivity timeout (1-21 minutes)
  851.         FFh do not change
  852.     CL = video display inactivity timeout (1-63 minutes)
  853.         FFh do not change
  854.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  855.         FFh do not change
  856.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  857. Return: CF clear if successful
  858.         AH = 00h
  859.         BL = current system inactivity timeout (1-21 minutes)
  860.         CL = current video display inactivity timeout (1-63 minutes)
  861.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  862.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  863.     CF set on error
  864.         AH = error code
  865.         01h input is out of range
  866.         02h no modem present
  867. SeeAlso: AX=4600h,INT 77
  868. --------b-154604-----------------------------
  869. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  870.     AX = 4604h
  871. Return: CF clear if successful
  872.         AL = byte read from I/O port 03F8h
  873.     CF set on error (not supported)
  874.         AH = 86h (unsupported function)
  875. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  876. --------b-154605-----------------------------
  877. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  878.     AX = 4605h
  879. Return: CF clear if successful
  880.     CF set on error (not supported)
  881.         AH = 86h (unsupported function)
  882. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  883.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  884.       LTE Lite 386 ROM
  885. --------b-1547-------------------------------
  886. INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST
  887.     AH = 47h
  888.     AL = subfunction
  889.        00h set contrast
  890.         BL = new contrast
  891.             (00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh)
  892.        other get current contrast
  893. Return: AL = contrast (00h-0Fh, 0Fh is darkest)
  894. Note:    may be for backward compatibility with HP95LX, as INT 15/AH=62h does
  895.       substantially the same thing as this function
  896. SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP"
  897. --------b-1548-------------------------------
  898. INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME
  899.     AH = 48h
  900.     AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h)
  901. SeeAlso: AH=47h"HP"
  902. --------S-1549-------------------------------
  903. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
  904.     AH = 49h
  905.     AL = serial interface
  906.         00h wired (COM1)
  907.         01h infrared
  908. Note:    interface should only be changed in deactivated state (see AH=4Ah)
  909. SeeAlso: AH=4Ah"HP"
  910. --------J-154900-----------------------------
  911. INT 15 - Far East MS-DOS - GET BIOS TYPE
  912.     AX = 4900h
  913. Return: CF clear if successful
  914.         AH = 00h
  915.         BL = BIOS mode
  916.         00h DOS/V
  917.         01h standard DBCS DOS (hardware DBCS support)
  918.     CF set on error
  919.         AH = 86h (function not supported)
  920. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  921. SeeAlso: AH=50h,INT 21/AH=30h
  922. --------S-154A-------------------------------
  923. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
  924.     AH = 4Ah
  925.     AL = control
  926.         00h deactivate
  927.         01h activate
  928. Note:    interface selected with AH=49h will be (de)activated
  929. SeeAlso: AH=49h"HP",AH=4Bh"HP"
  930. --------b-154B-------------------------------
  931. INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME
  932.     AH = 4Bh
  933. Desc:    adjust system time based on real-time clock
  934. SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch
  935. --------b-154DD4-----------------------------
  936. INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
  937.     AX = 4DD4h
  938. Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
  939.         CX = model
  940.         0101h HP 95LX
  941.         0102h HP 100LX/200LX
  942.         DH = ???
  943.         02h HP 200LX 2MB BIOS 1.01 A D german
  944.         DL = ???
  945.         00h HP 95LX
  946.         01h HP 200LX 2MB BIOS 1.01 A D german
  947. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  948. SeeAlso: INT 61"HP 95LX"
  949. --------b-154E-------------------------------
  950. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  951.     AH = 4Eh
  952.     AL = light sleep
  953.         00h disabled
  954.         01h enabled
  955. Note:    when light sleep is disabled, the system will continue running at full
  956.       speed; when enabled, it may automatically slow to conserve batteries
  957. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  958. --------B-154F-------------------------------
  959. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  960.     AH = 4Fh
  961.     AL = hardware scan code (see #0005)
  962.     CF set
  963. Return: CF set to continue processing scan code
  964.        AL = possibly-altered hardware scan code (see #0005)
  965.     CF clear
  966.        scan code should be ignored
  967. Notes:    called by INT 09 handler to translate scan codes; the INT 09 code does
  968.       not examine the scan code it reads from the keyboard until after
  969.       this function returns.  This permits software to rearrange the
  970.       keyboard; for example, swapping the CapsLock and Control keys, or
  971.       turning the right Shift key into Enter.
  972.     DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is
  973.       pressed and a SmartDrive v4-compatible cache is installed which has
  974.       dirty cache buffers; some other disk caches such as HyperDisk
  975.       operate similarly in order to prevent loss of cached data which has
  976.       not yet been written to disk
  977. SeeAlso: INT 09,INT 15/AH=C0h
  978. --------J-1550-------------------------------
  979. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  980.     AH = 50h
  981.     AL = which function address to retrieve
  982.         00h "read font" function
  983.         01h "write font" function
  984.     BL = 00h
  985.     BH = character size (00h single-byte, 01h double-byte)
  986.     DH = width of character cell
  987.     DL = height of character cell
  988.     BP = code page (see #0374)
  989. Return: CF clear if successful
  990.         AH = 00h
  991.         ES:BX -> requested function's address
  992.     CF set on error
  993.         AH = error code (see #0375)
  994. SeeAlso: AH=49h
  995.  
  996. (Table 0374)
  997. Values for DOS/V code page:
  998.  0    default
  999.  437    US English
  1000.  932    Japanese
  1001.  934    Korea
  1002.  936    China
  1003.  938    Taiwan
  1004. SeeAlso: #1099
  1005.  
  1006. (Table 0375)
  1007. Values for DOS/V error code:
  1008.  01h    invalid font type in BH
  1009.  02h    BL not zero
  1010.  03h    invalid font size
  1011.  04h    invalid code page
  1012.  80h    unsupported function (PC)
  1013.  86h    unsupported function (XT)
  1014. SeeAlso: #1020
  1015. --------T-1550-------------------------------
  1016. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  1017.     AH = 50h
  1018.     BX = segment of page directory table
  1019.     CX = page number of page table
  1020. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  1021. --------T-1551-------------------------------
  1022. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  1023.     AH = 51h
  1024.     STACK:    DWORD    selector:offset of function
  1025. Return: registers as returned by function
  1026. Note:    executes function with privilege level 0 (highest privilege)
  1027. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  1028. --------B-155101-----------------------------
  1029. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  1030.     AX = 5101h
  1031. Return: CF set if successful
  1032.         AH = 00h
  1033.         AL = current configuration number
  1034.         00h system unit only
  1035.         FFh configuration not recognized
  1036.         BX = status flag
  1037.         bits 0-14: reserved
  1038.         bit 15: additional data is available (location TBD)
  1039.     CF clear on error
  1040.         AH = status
  1041.         01h expansion unit is not present
  1042.         86h function not supported
  1043. Note:    CF convention is the reverse of the standard convention for this
  1044.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  1045. --------T-1552-------------------------------
  1046. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  1047.     AH = 52h
  1048. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  1049. --------d-1552-------------------------------
  1050. INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
  1051.     AH = 52h
  1052.     DL = drive number
  1053. Return: CF clear if OK to eject media
  1054.         AH = 00h
  1055.     CF set if ejection disallowed
  1056.         AH = error code (B1h,B3h) (see #0144)
  1057. Note:    called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
  1058.       request is made
  1059. SeeAlso: INT 13/AH=46h"INT 13 Extensions"
  1060. --------p-155300-----------------------------
  1061. INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK
  1062.     AX = 5300h
  1063.     BX = device ID of system BIOS (0000h)
  1064. Return: CF clear if successful
  1065.         AH = major version (BCD)
  1066.         AL = minor version (BCD)
  1067.         BX = 504Dh ("PM")
  1068.         CX = flags (see #0376)
  1069.     CF set on error
  1070.         AH = error code (06h,09h,86h) (see #0377)
  1071. BUG:    early versions of the Award Modular BIOS with built-in APM support
  1072.       reportedly do not set BX on return
  1073.  
  1074. Bitfields for APM flags:
  1075. Bit(s)    Description    (Table 0376)
  1076.  0    16-bit protected mode interface supported
  1077.  1    32-bit protected mode interface supported
  1078.  2    CPU idle call reduces processor speed
  1079.  3    BIOS power management disabled
  1080.  4    BIOS power management disengaged (APM v1.1)
  1081.  5-7    reserved
  1082.  
  1083. (Table 0377)
  1084. Values for APM error code:
  1085.  01h    power management functionality disabled
  1086.  02h    interface connection already in effect
  1087.  03h    interface not connected
  1088.  04h    real-mode interface not connected
  1089.  05h    16-bit protected-mode interface already connected
  1090.  06h    16-bit protected-mode interface not supported
  1091.  07h    32-bit protected-mode interface already connected
  1092.  08h    32-bit protected-mode interface not supported
  1093.  09h    unrecognized device ID
  1094.  0Ah    invalid parameter value in CX
  1095.  0Bh    (APM v1.1) interface not engaged
  1096.  0Ch    (APM v1.2) function not supported
  1097.  0Dh    (APM v1.2) Resume Timer disabled
  1098.  0Eh-1Fh reserved for other interface and general errors
  1099.  20h-3Fh reserved for CPU errors
  1100.  40h-5Fh reserved for device errors
  1101.  60h    can't enter requested state
  1102.  61h-7Fh reserved for other system errors
  1103.  80h    no power management events pending
  1104.  81h-85h reserved for other power management event errors
  1105.  86h    APM not present
  1106.  87h-9Fh reserved for other power management event errors
  1107.  A0h-FEh reserved
  1108.  FFh    undefined
  1109. --------p-155301-----------------------------
  1110. INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE
  1111.     AX = 5301h
  1112.     BX = device ID of system BIOS (0000h)
  1113. Return: CF clear if successful
  1114.     CF set on error
  1115.         AH = error code (02h,05h,07h,09h) (see #0377)
  1116. Note:    on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  1117.       compatibility mode until it is informed that the user supports a
  1118.       newer version of APM (see AX=530Eh)
  1119. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  1120. --------p-155302-----------------------------
  1121. INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE
  1122.     AX = 5302h
  1123.     BX = device ID of system BIOS (0000h)
  1124. Return: CF clear if successful
  1125.         AX = real-mode segment base address of protected-mode 16-bit code
  1126.         segment
  1127.         BX = offset of entry point
  1128.         CX = real-mode segment base address of protected-mode 16-bit data
  1129.         segment
  1130.         ---APM v1.1---
  1131.         SI = APM BIOS code segment length
  1132.         DI = APM BIOS data segment length
  1133.     CF set on error
  1134.         AH = error code (02h,05h,06h,07h,09h) (see #0377)
  1135. Notes:    the caller must initialize two consecutive descriptors with the
  1136.       returned segment base addresses; these descriptors must be valid
  1137.       whenever the protected-mode interface is called, and will have
  1138.       their limits arbitrarily set to 64K.
  1139.     the protected mode interface is invoked by making a far call with the
  1140.       same register values as for INT 15; it must be invoked while CPL=0,
  1141.       the code segment descriptor must have a DPL of 0, the stack must be
  1142.       in a 16-bit segment and have enough room for BIOS use and possible
  1143.       interrupts, and the current I/O permission bit map must allow access
  1144.       to the I/O ports used for power management.
  1145.     functions 00h-03h are not available from protected mode
  1146.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  1147.       compatibility mode until it is informed that the user supports a
  1148.       newer version of APM (see AX=530Eh)
  1149. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  1150. --------p-155303-----------------------------
  1151. INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE
  1152.     AX = 5303h
  1153.     BX = device ID of system BIOS (0000h)
  1154. Return: CF clear if successful
  1155.         AX = real-mode segment base address of protected-mode 32-bit code
  1156.         segment
  1157.         EBX = offset of entry point
  1158.         CX = real-mode segment base address of protected-mode 16-bit code
  1159.         segment
  1160.         DX = real-mode segment base address of protected-mode 16-bit data
  1161.         segment
  1162.         ---APM v1.1---
  1163.         SI = APM BIOS code segment length
  1164.         DI = APM BIOS data segment length
  1165.     CF set on error
  1166.         AH = error code (02h,05h,07h,08h,09h) (see #0377)
  1167. Notes:    the caller must initialize three consecutive descriptors with the
  1168.       returned segment base addresses for 32-bit code, 16-bit code, and
  1169.       16-bit data, respectively; these descriptors must be valid whenever
  1170.       the protected-mode interface is called, and will have their limits
  1171.       arbitrarily set to 64K.
  1172.     the protected mode interface is invoked by making a far call to the
  1173.       32-bit code segment with the same register values as for INT 15; it
  1174.       must be invoked while CPL=0, the code segment descriptor must have a
  1175.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  1176.       for BIOS use and possible interrupts, and the current I/O permission
  1177.       bit map must allow access to the I/O ports used for power management.
  1178.     functions 00h-03h are not available from protected mode
  1179.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  1180.       compatibility mode until it is informed that the user supports a
  1181.       newer version of APM (see AX=530Eh)
  1182. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  1183. --------p-155304-----------------------------
  1184. INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE
  1185.     AX = 5304h
  1186.     BX = device ID of system BIOS (0000h)
  1187. Return: CF clear if successful
  1188.     CF set on error
  1189.         AH = error code (03h,09h) (see #0377)
  1190. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  1191. --------p-155305-----------------------------
  1192. INT 15 - Advanced Power Management v1.0+ - CPU IDLE
  1193.     AX = 5305h
  1194. Return: CF clear if successful (after system leaves idle state)
  1195.     CF set on error
  1196.         AH = error code (03h,0Bh) (see #0377)
  1197. Notes:    call when the system is idle and should be suspended until the next
  1198.       system event or interrupt
  1199.     should not be called from within a hardware interrupt handler to avoid
  1200.       reentrance problems
  1201.     if an interrupt causes the system to resume normal processing, the
  1202.       interrupt may or may not have been handled when the BIOS returns
  1203.       from this call; thus, the caller should allow interrupts on return
  1204.     interrupt handlers may not retain control if the BIOS allows
  1205.       interrupts while in idle mode even if they are able to determine
  1206.       that they were called from idle mode
  1207.     the caller should issue this call continuously in a loop until it needs
  1208.       to perform some processing of its own
  1209. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  1210. --------p-155306-----------------------------
  1211. INT 15 - Advanced Power Management v1.0+ - CPU BUSY
  1212.     AX = 5306h
  1213. Return: CF clear if successful
  1214.     CF set on error
  1215.         AH = error code (03h,0Bh) (see #0377)
  1216. Notes:    called to ensure that the system runs at full speed even on systems
  1217.       where the BIOS is unable to recognize increased activity (especially
  1218.       if interrupts are hooked by other programs and not chained to the
  1219.       BIOS)
  1220.     this call may be made even when the system is already running at full
  1221.       speed, but it will create unnecessary overhead
  1222.     should not be called from within a hardware interrupt handler to avoid
  1223.       reentrance problems
  1224. SeeAlso: AX=5305h
  1225. --------p-155307-----------------------------
  1226. INT 15 - Advanced Power Management v1.0+ - SET POWER STATE
  1227.     AX = 5307h
  1228.     BX = device ID (see #0378)
  1229.     CX = system state ID (see #0379)
  1230. Return: CF clear if successful
  1231.     CF set on error
  1232.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0377)
  1233. Note:    should not be called from within a hardware interrupt handler to avoid
  1234.       reentrance problems
  1235. SeeAlso: AX=530Ch
  1236.  
  1237. (Table 0378)
  1238. Values for APM device IDs:
  1239.  0000h    system BIOS
  1240.  0001h    all devices for which the system BIOS manages power
  1241.  01xxh    display (01FFh for all attached display devices)
  1242.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  1243.  03xxh    parallel ports (03FFh for all attached parallel ports)
  1244.  04xxh    serial ports (04FFh for all attached serial ports)
  1245. ---APM v1.1+ ---
  1246.  05xxh    network adapters (05FFh for all attached network adapters)
  1247.  06xxh    PCMCIA sockets (06FFh for all)
  1248.  0700h-7FFFh reserved
  1249.  80xxh    system battery devices (APM v1.2)
  1250.  8100h-DFFFh reserved
  1251.  Exxxh    OEM-defined power device IDs
  1252.  F000h-FFFFh reserved
  1253.  
  1254. (Table 0379)
  1255. Values for system state ID:
  1256.  0000h    ready (not supported for device ID 0001h)
  1257.  0001h    stand-by
  1258.  0002h    suspend
  1259.  0003h    off (not supported for device ID 0001h)
  1260. ---APM v1.1---
  1261.  0004h    last request processing notification (only for device ID 0001h)
  1262.  0005h    last request rejected (only for device ID 0001h)
  1263.  0006h-001Fh reserved system states
  1264.  0020h-003Fh OEM-defined system states
  1265.  0040h-007Fh OEM-defined device states
  1266.  0080h-FFFFh reserved device states
  1267. --------p-155307CX0001-----------------------
  1268. INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY
  1269.     AX = 5307h
  1270.     CX = 0001h
  1271.     BX = 0001h (device ID for all power-managed devices)
  1272. Return: CF clear
  1273. Notes:    puts the entire system into stand-by mode; normally called in response
  1274.       to a System Stand-by Request notification after any necessary
  1275.       processing, but may also be invoked at the caller's discretion
  1276.     should not be called from within a hardware interrupt handler to avoid
  1277.       reentrance problems
  1278.     the stand-by state is typically exited on an interrupt
  1279. SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=530Bh
  1280. --------p-155307CX0002-----------------------
  1281. INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM
  1282.     AX = 5307h
  1283.     CX = 0002h
  1284.     BX = 0001h (device ID for all power-managed devices)
  1285. Return: after system is resumed
  1286.     CF clear
  1287. Notes:    puts the entire system into a low-power suspended state; normally
  1288.       called in response to a Suspend System Request notification after
  1289.       any necessary processing, but may also be invoked at the caller's
  1290.       discretion
  1291.     should not be called from within a hardware interrupt handler to avoid
  1292.       reentrance problems
  1293.     the caller may need to update its date and time values because the
  1294.       system could have been suspended for a long period of time
  1295. SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
  1296. --------p-155308-----------------------------
  1297. INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT
  1298.     AX = 5308h
  1299.     BX = device ID for all devices power-managed by APM
  1300.         0001h (APM v1.1+)
  1301.         FFFFh (APM v1.0)
  1302.     CX = new state
  1303.         0000h disabled
  1304.         0001h enabled
  1305. Return: CF clear if successful
  1306.     CF set on error
  1307.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0377)
  1308. Notes:    when power management is disabled, the system BIOS will not
  1309.       automatically power down devices, enter stand-by or suspended mode,
  1310.       or perform any power-saving actions in response to AX=5305h calls
  1311.     should not be called from within a hardware interrupt handler to avoid
  1312.       reentrance problems
  1313.     the APM BIOS should never be both disabled and disengaged at the same
  1314.       time
  1315. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  1316. --------p-155309-----------------------------
  1317. INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS
  1318.     AX = 5309h
  1319.     BX = device ID for all devices power-managed by APM
  1320.         0001h (APM v1.1)
  1321.         FFFFh (APM v1.0)
  1322. Return: CF clear if successful
  1323.     CF set on error
  1324.         AH = error code (03h,09h,0Bh) (see #0377)
  1325. Note:    should not be called from within a hardware interrupt handler to avoid
  1326.       reentrance problems
  1327. SeeAlso: AX=5308h
  1328. --------p-15530A-----------------------------
  1329. INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS
  1330.     AX = 530Ah
  1331.     BX = device ID
  1332.         0001h all devices power-managed by APM
  1333.         80xxh specific battery unit number XXh (01h-FFh) (APM v1.2)
  1334. Return: CF clear if successful
  1335.         BH = AC line status
  1336.         00h off-line
  1337.         01h on-line
  1338.         02h on backup power (APM v1.1)
  1339.         FFh unknown
  1340.         other reserved
  1341.         BL = battery status (see #0380)
  1342.         CH = battery flag (APM v1.1+) (see #0381)
  1343.         CL = remaining battery life, percentage
  1344.         00h-64h (0-100) percentage of full charge
  1345.         FFh unknown
  1346.         DX = remaining battery life, time (APM v1.1) (see #0382)
  1347.         ---if specific battery unit specified---
  1348.         SI = number of battery units currently installed
  1349.     CF set on error
  1350.         AH = error code (09h,0Ah) (see #0377)
  1351. Notes:    should not be called from within a hardware interrupt handler to avoid
  1352.       reentrance problems
  1353.     supported in real mode (INT 15) and both 16-bit and 32-bit protected
  1354.       mode
  1355.  
  1356. (Table 0380)
  1357. Values for APM v1.0+ battery status:
  1358.  00h    high
  1359.  01h    low
  1360.  02h    critical
  1361.  03h    charging
  1362.  FFh    unknown
  1363.  other    reserved
  1364. SeeAlso: #0381,#0382
  1365.  
  1366. Bitfields for APM v1.1+ battery flag:
  1367. Bit(s)    Description    (Table 0381)
  1368.  0    high
  1369.  1    low
  1370.  2    critical
  1371.  3    charging
  1372.  4    selected battery not present (APM v1.2)
  1373.  5-6    reserved (0)
  1374.  7    no system battery
  1375. Note:    all bits set (FFh) if unknown
  1376. SeeAlso: #0380,#0382
  1377.  
  1378. Bitfields for APM v1.1+ remaining battery life:
  1379. Bit(s)    Description    (Table 0382)
  1380.  15    time units: 0=seconds, 1=minutes
  1381.  14-0    battery life in minutes or seconds
  1382. Note:    all bits set (FFFFh) if unknown
  1383. SeeAlso: #0380,#0381
  1384. --------p-15530B-----------------------------
  1385. INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT
  1386.     AX = 530Bh
  1387. Return: CF clear if successful
  1388.         BX = event code (see #0383)
  1389.         CX = event information (APM v1.2) if BX=0003h or BX=0004h
  1390.         bit 0: PCMCIA socket was powered down in suspend state
  1391.     CF set on error
  1392.         AH = error code (03h,0Bh,80h) (see #0377)
  1393. Notes:    although power management events are often asynchronous, notification
  1394.       will not be made until polled via this call to permit software to
  1395.       only receive event notification when it is prepared to process
  1396.       power management events; since these events are not very time-
  1397.       critical, it should be sufficient to poll once or twice per second
  1398.     the critical resume notification is made after the system resumes
  1399.       from an emergency suspension; normally, the system BIOS only notifies
  1400.       its partner that it wishes to suspend and relies on the partner to
  1401.       actually request the suspension, but no notification is made on an
  1402.       emergency suspension
  1403.     should not be called from within a hardware interrupt handler to avoid
  1404.       reentrance problems
  1405. SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND"
  1406.  
  1407. (Table 0383)
  1408. Values for APM event code:
  1409.  0001h    system stand-by request
  1410.  0002h    system suspend request
  1411.  0003h    normal resume system notification
  1412.  0004h    critical resume system notification
  1413.  0005h    battery low notification
  1414. ---APM v1.1---
  1415.  0006h    power status change notification
  1416.  0007h    update time notification
  1417.  0008h    critical system suspend notification
  1418.  0009h    user system standby request notification
  1419.  000Ah    user system suspend request notification
  1420.  000Bh    system standby resume notification
  1421. ---APM v1.2---
  1422.  000Ch    capabilities change notification (see AX=5310h)
  1423. ------
  1424.  000Dh-00FFh reserved system events
  1425.  01xxh    reserved device events
  1426.  02xxh    OEM-defined APM events
  1427.  0300h-FFFFh reserved
  1428. --------p-15530C-----------------------------
  1429. INT 15 - Advanced Power Management v1.1+ - GET POWER STATE
  1430.     AX = 530Ch
  1431.     BX = device ID (see #0378)
  1432. Return: CF clear if successful
  1433.         BX = system state ID (see #0379)
  1434.     CF set on error
  1435.         AH = error code (01h,09h) (see #0377)
  1436. SeeAlso: AX=5307h
  1437. --------p-15530D-----------------------------
  1438. INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT
  1439.     AX = 530Dh
  1440.     BX = device ID (see #0378)
  1441.     CX = function
  1442.         0000h disable power management
  1443.         0001h enable power management
  1444. Return: CF clear if successful
  1445.     CF set on error
  1446.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0377)
  1447. Desc:    specify whether automatic power management should be active for a
  1448.       given device
  1449. SeeAlso: AX=5308h,AX=530Fh
  1450. --------p-15530E-----------------------------
  1451. INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
  1452.     AX = 530Eh
  1453.     BX = device ID of system BIOS (0000h)
  1454.     CH = APM driver major version (BCD)
  1455.     CL = APM driver minor version (BCD) (02h for APM v1.2)
  1456. Return: CF clear if successful
  1457.         AH = APM connection major version (BCD)
  1458.         AL = APM connection minor version (BCD)
  1459.     CF set on error
  1460.         AH = error code (03h,09h,0Bh) (see #0377)
  1461. SeeAlso: AX=5300h,AX=5303h
  1462. --------p-15530F-----------------------------
  1463. INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT
  1464.     AX = 530Fh
  1465.     BX = device ID (see #0378)
  1466.     CX = function
  1467.         0000h disengage power management
  1468.         0001h engage power management
  1469. Return: CF clear if successful
  1470.     CF set on error
  1471.         AH = error code (01h,09h) (see #0377)
  1472. Notes:    unlike AX=5308h, this call does not affect the functioning of the APM
  1473.       BIOS
  1474.     when cooperative power management is disengaged, the APM BIOS performs
  1475.       automatic power management of the system or device
  1476. SeeAlso: AX=5308h,AX=530Dh
  1477. --------p-155310-----------------------------
  1478. INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES
  1479.     AX = 5310h
  1480.     BX = device ID (see #0378)
  1481.         0000h (APM BIOS)
  1482.         other reserved
  1483. Return: CF clear if successful
  1484.         BL = number of battery units supported (00h if no system batteries)
  1485.         CX = capabilities flags (see #0384)
  1486.     CF set on error
  1487.         AH = error code (01h,09h,86h) (see #0377)
  1488. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  1489.       32-bit protected mode interfaces; it does not require that a
  1490.       connection be established prior to use
  1491.     this function will return the capabilities currently in effect, not
  1492.       any new settings which have been made but do not take effect until
  1493.       a system restart
  1494. SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h
  1495.  
  1496. Bitfields for APM v1.2 capabilities flags:
  1497. Bit(s)    Description    (Table 0384)
  1498.  0    can enter global standby state
  1499.  1    can enter global suspend state
  1500.  2    resume timer will wake up system from standby mode
  1501.  3    resume timer will wake up system from suspend mode
  1502.  4    Resume on Ring Indicator will wake up system from standby mode
  1503.  5    Resume on Ring Indicator will wake up system from suspend mode
  1504.  6    PCMCIA Ring Indicator will wake up system from standby mode
  1505.  7    PCMCIA Ring Indicator will wake up system from suspend mode
  1506. --------p-155311-----------------------------
  1507. INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER
  1508.     AX = 5311h
  1509.     BX = device ID (see #0378)
  1510.         0000h (APM BIOS)
  1511.         other reserved
  1512.     CL = function
  1513.         00h disable Resume Timer
  1514.         01h get Resume Timer
  1515.         02h set Resume Timer
  1516.         CH = resume time, seconds (BCD)
  1517.         DL = resume time, minutes (BCD)
  1518.         DH = resume time, hours (BCD)
  1519.         SI = resume date (BCD), high byte = month, low byte = day
  1520.         DI = resume date, year (BCD)
  1521. Return: CF clear if successful
  1522.         ---if getting timer---
  1523.         CH = resume time, seconds (BCD)
  1524.         DL = resume time, minutes (BCD)
  1525.         DH = resume time, hours (BCD)
  1526.         SI = resume date (BCD), high byte = month, low byte = day
  1527.         DI = resume date, year (BCD)
  1528.     CF set on error
  1529.         AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #0377)
  1530. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  1531.       32-bit protected mode interfaces
  1532. SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h
  1533. --------p-155312-----------------------------
  1534. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING
  1535.     AX = 5312h
  1536.     BX = device ID (see #0378)
  1537.         0000h (APM BIOS)
  1538.         other reserved
  1539.     CL = function
  1540.         00h disable Resume on Ring Indicator
  1541.         01h enable Resume on Ring Indicator
  1542.         02h get Resume on Ring Indicator status
  1543. Return: CF clear if successful
  1544.         CX = resume status (0000h disabled, 0001h enabled)
  1545.     CF set on error
  1546.         AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #0377)
  1547. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  1548.       32-bit protected mode interfaces
  1549. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h
  1550. --------p-155313-----------------------------
  1551. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS
  1552.     AX = 5313h
  1553.     BX = device ID (see #0378)
  1554.         0000h (APM BIOS)
  1555.         other reserved
  1556.     CL = function
  1557.         00h disable timer-based requests
  1558.         01h enable timer-based requests
  1559.         02h get timer-based requests status
  1560. Return: CF clear if successful
  1561.         CX = timer-based requests status (0000h disabled, 0001h enabled)
  1562.     CF set on error
  1563.         AH = error code (03h,09h,0Ah,0Bh,86h) (see #0377)
  1564. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  1565.       32-bit protected mode interfaces
  1566. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h
  1567. --------p-155380BH00-------------------------
  1568. INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
  1569.     AX = 5380h
  1570.     BH = 00h
  1571. Return: CF clear if successful
  1572.         AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
  1573.         BL = sustdbymode (see #0385)
  1574. SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
  1575.  
  1576. Bitfields for APM SL sustdbymode:
  1577. Bit(s)    Description    (Table 0385)
  1578.  2    ???
  1579.  1    Auto Power Off Timer Enable (APWR_TMR_EN)
  1580.  0    ???
  1581. --------p-155380BH01-------------------------
  1582. INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
  1583.     AX = 5380h
  1584.     BH = 01h
  1585.     BL = sustdbymode (see #0385)
  1586. Return: CF clear if successful
  1587. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  1588. --------p-155380BH02-------------------------
  1589. INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
  1590.     AX = 5380h
  1591.     BH = 02h
  1592. Return: CF clear if successful
  1593.     SI:DI = timer count in seconds (actually 1.024 seconds)
  1594. Desc:    reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  1595. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
  1596. --------p-155380BH03-------------------------
  1597. INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
  1598.     AX = 5380h
  1599.     BH = 03h
  1600.     SI:DI = timer count in seconds (actually 1.024 seconds)
  1601. Return: CF clear if successful
  1602. Desc:    sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  1603. Note:    the maximum timer count is 268431 seconds
  1604. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
  1605. --------p-155380BH04-------------------------
  1606. INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
  1607.     AX = 5380h
  1608.     BH = 04h
  1609. Return: CF clear if successful
  1610.     SI:DI = timer count in seconds (actually 1.024 seconds)
  1611. Desc:    reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
  1612. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
  1613. --------p-155380BH05-------------------------
  1614. INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
  1615.     AX = 5380h
  1616.     BH = 05h
  1617.     SI:DI = timer count in seconds (actually 1.024 seconds)
  1618. Return: CF clear if successful
  1619. Desc:    sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
  1620. Note:    the maximum timer count is 134213 seconds
  1621. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
  1622. --------p-155380BH06-------------------------
  1623. INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
  1624.     AX = 5380h
  1625.     BH = 06h
  1626. Return: CF clear if successful
  1627.         BL = resume condition (see #0386)
  1628. Desc:    reads the value of 82360SL RESUME_MASK register
  1629. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
  1630.  
  1631. Bitfields for APM SL resume condition:
  1632. Bit(s)    Description    (Table 0386)
  1633.  7-2    reserved (0)
  1634.  1    alarm enabled (resume on CMOS alarm)
  1635.  0    ring enabled
  1636. --------p-155380BH07-------------------------
  1637. INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
  1638.     AX = 5380h
  1639.     BH = 07h
  1640.     BL = resume condition (see #0386)
  1641. Return: CF clear if successful
  1642. Desc:    sets the value of 82360SL RESUME_MASK register
  1643. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
  1644. --------p-155380BH08-------------------------
  1645. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
  1646.     AX = 5380h
  1647.     BH = 08h
  1648. Return: CF clear if successful
  1649.         CH = hours
  1650.         CL = minutes
  1651.         SI = seconds
  1652.     CF set on error
  1653.         AH = error code (see #0387)
  1654. Desc:    gets calendar event time from CMOS ram
  1655. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  1656.  
  1657. (Table 0387)
  1658. Values for APM SL error code:
  1659.  02h    no alarm set
  1660.  03h    no battery
  1661. --------p-155380BH09-------------------------
  1662. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
  1663.     AX = 5380h
  1664.     BH = 09h
  1665.     CH = hours
  1666.     CL = minutes
  1667.     SI = seconds
  1668. Return: CF clear if successful
  1669.     CF set on error
  1670.         AH = error code (see #0387)
  1671. Desc:    sets calendar event time in CMOS ram, enables Alarm resume
  1672. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
  1673. --------p-155380BH0A-------------------------
  1674. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
  1675.     AX = 5380h
  1676.     BH = 0Ah
  1677. Return: CF clear if successful
  1678.         SI = century
  1679.         DI = year
  1680.         CH = month
  1681.         CL = day
  1682.     CF set on error
  1683.         AH = error code (see #0387)
  1684. Desc:    reads calendar event date from Extended CMOS ram
  1685. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
  1686. --------p-155380BH0B-------------------------
  1687. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
  1688.     AX = 5380h
  1689.     BH = 0Bh
  1690.     SI = century
  1691.     DI = year
  1692.     CH = month
  1693.     CL = day
  1694. Return: CF clear if successful
  1695.     CF set on error
  1696.         AH = error code (see #0387)
  1697. Desc:    sets calendar event date in Extended CMOS ram
  1698. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  1699. --------p-155380BH0C-------------------------
  1700. INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
  1701.     AX = 5380h
  1702.     BH = 0Ch
  1703. Return: CF clear if successful
  1704.     CL = CPU clock divider (1,2,4 or 8)
  1705.     BL = autocpumode ???
  1706. Desc:    reads bits 4-5 of CPUPWRMODE register
  1707. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
  1708. --------p-155380BH0D-------------------------
  1709. INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
  1710.     AX = 5380h
  1711.     BH = 0Dh
  1712.     CL = CPU clock divider (1,2,4 or 8)
  1713.     BL = autocpumode ???
  1714. Return: CF clear if successful
  1715. Desc:    writes bits 4-5 of CPUPWRMODE register
  1716. SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
  1717. --------p-155380BH7E-------------------------
  1718. INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
  1719.     AX = 5380h
  1720.     BH = 7Eh
  1721. Return: AL = ???
  1722.         03h on A-Step 386SL BIOSes
  1723.         12h on later steps
  1724.     BX = Control port (00B0h)
  1725. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  1726. --------p-155380BH7F-------------------------
  1727. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  1728.     AX = 5380h
  1729.     BH = 7Fh
  1730. Return: CF clear if successful
  1731.         BX = OEM identifier
  1732.         all other registers OEM-defined
  1733.         ---Intel SL Enhanced Option BIOS---
  1734.         BX = 534Ch ('SL')
  1735.         CL = 4Fh ('O')
  1736.         AL = version (10h = 1.0)
  1737.         ---HP APM BIOS---
  1738.         BX = 4850h ('HP')
  1739.         CX = version (0001h)
  1740.     CF set on error
  1741.         AH = error code (03h) (see #0377)
  1742. SeeAlso: AX=5380h/BH=00h
  1743. --------p-155380-----------------------------
  1744. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  1745.     AX = 5380h
  1746.     BH <> 7Fh
  1747.     all other registers OEM-defined
  1748. Return: OEM-defined
  1749. SeeAlso: AX=5380h/BH=7Fh
  1750. --------X-1553B0BH00-------------------------
  1751. INT 15 - Intel System Management Bus - RESERVED
  1752.     AX = 53B0h
  1753.     BH = 00h
  1754. Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell
  1755.       for the Smart Battery proposal, but designed to be generic enough to
  1756.       handle other devices besides batteries
  1757. --------X-1553B0BH01-------------------------
  1758. INT 15 - Intel System Management Bus - INSTALLATION CHECK
  1759.     AX = 53B0h
  1760.     BH = 01h
  1761.     BL = 72h ('r')
  1762.     CX = 6164h ('ad')
  1763. Return: CF clear if installed
  1764.         AH = SMBus BIOS Interface Specification major version (01h)
  1765.         AL = SMBus BIOS Interface Specification minor version (00h)
  1766.         BL = number of SMBus devices present
  1767.         CX = 6941h ('iA')
  1768.         DX = vendor-specified SMBus hardware code
  1769.         0000h means undefined hardware type
  1770.     CF set if error
  1771.         AH = Error code 0Ah, 86h (see #0388)
  1772. Note:    this function is only supported in INT 15h mode
  1773. SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h
  1774.  
  1775. (Table 0388)
  1776. Values for Intel System Management Bus error codes:
  1777.  00h    SMBus OK
  1778.  01h    SMBus connect failed
  1779.  02h    SMBus already connected (see also #0389)
  1780.  03h    SMBus disconnect failed
  1781.  04h    SMBus not connected
  1782.  05h    SMBus INT 15 interface disabled
  1783.  06h    SMBus device address request out of range
  1784.  07h    SMBus unknown failure
  1785.  08h    SMBus message list empty
  1786.  09h    SMBus message list overflow
  1787.  0Ah    SMBus invalid signature
  1788.  10h    SMBus device address not acknowledged
  1789.  11h    SMBus device error detected
  1790.  12h    SMBus device command access denied
  1791.  13h    SMBus unknown error
  1792.  14h    SMBus transaction pending
  1793.  15h    SMBus no transaction pending
  1794.  16h    SMBus request does not match pending transaction
  1795.  17h    SMBus device access denied
  1796.  18h    SMBus timeout
  1797.  19h    SMBus protocol not supported
  1798.  1Ah    SMBus busy
  1799.  1Bh    SMBus SMI detected
  1800.  80h    SMBus OK (previously unreported SMI occurred)
  1801.  86h    SMBus not supported
  1802.  
  1803. (Table 0389)
  1804. Values for Intel System Management Bus Already Connected sub-error codes:
  1805.  01h    real mode connect already established
  1806.  02h    16-bit PMode connect already established
  1807.  03h    32-bit PMode connect already established
  1808. SeeAlso: #0388
  1809. --------X-1553B0BH02-------------------------
  1810. INT 15 - Intel System Management Bus - REAL MODE CONNECT
  1811.     AX = 53B0h
  1812.     BH = 02h
  1813.     CX = 6941h ('iA')
  1814. Return: CF clear if successful
  1815.         AX = SMBus Real mode code segment
  1816.         BX = offset of entry point into SMBus BIOS Interface
  1817.         CX = SMBus Real mode data segment
  1818.     CF set if error
  1819.         AH = error code (01h,02h,0Ah,86h) (see #0388)
  1820.         AL = sub-error code if error code is 02h (see #0389)
  1821. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  1822.       to the supplied entry point instead of INT 15 (with registers
  1823.       identical to those described here for INT 15)
  1824. Notes:    Support for this function is optional
  1825.     this function is only supported in INT 15 mode when implemented
  1826. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  1827. --------X-1553B0BH03-------------------------
  1828. INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT
  1829.     AX = 53B0h
  1830.     BH = 03h
  1831.     CX = 6941h ('iA')
  1832. Return: CF clear if successful
  1833.         AX = SMBus 16-bit code segment (real mode base address)
  1834.         BX = offset of entry point into SMBus BIOS Interface
  1835.         CX = SMBus 16-bit data segment (real mode base address)
  1836.         SI = code segment length in bytes
  1837.         DI = data segment length in bytes
  1838.     CF set if error
  1839.         AH = error code (01h,02h,0Ah,86h) (see #0388)
  1840.         AL = sub-error code if error code is 02h (see #0389)
  1841. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  1842.       to the supplied entry point instead of INT 15 (with registers
  1843.       identical to those described here for INT 15)
  1844. Notes:    before calling the entry point, two descriptors must be initialized
  1845.       in the GDT or LDT.  They must be consecutive and be in the order of
  1846.       code, then data.  At the time    of the call, the descriptors must be
  1847.       valid and have CPL=0.
  1848.     the code descriptor must be ring-0 privilege
  1849.     this function is only supported in INT 15 mode
  1850. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  1851. --------X-1553B0BH04-------------------------
  1852. INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT
  1853.     AX = 53B0h
  1854.     BH = 04h
  1855.     CX = 6941h ('iA')
  1856. Return: CF clear if successful
  1857.         AX = SMBus 32-bit code segment (real mode base address)
  1858.         EBX = offset of entry point into SMBus BIOS Interface
  1859.         CX = SMBus 16-bit code segment (real mode base address)
  1860.         DX = SMBus data segment (real mode base address)
  1861.         SI = code segment length in bytes
  1862.         DI = data segment length in bytes
  1863.     CF set if error
  1864.         AH = error code (01h,02h,0Ah,86h) (see #0388)
  1865.         AL = sub-error code if error code is 02h (see #0389)
  1866. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  1867.       to the supplied entry point instead of INT 15 (with registers
  1868.       identical to those described here for INT 15)
  1869. Notes:    before calling the entry point, two descriptors must be initialized in
  1870.       the GDT or LDT.  They must be consecutive and be in the order of
  1871.       32-bit code, 16-bit code, then data.    At the time of the call, the
  1872.       descriptors must be valid and have CPL=0.
  1873.     the code descriptors must be ring-0 privilege
  1874.     this function is supported only in INT 15 mode
  1875. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h
  1876. --------X-1553B0BH05-------------------------
  1877. INT 15 - Intel System Management Bus - DISCONNECT
  1878.     AX = 53B0h
  1879.     BH = 05h
  1880.     CX = 6941h ('iA')
  1881. Return: CF clear if successful
  1882.         AH = 00h (SMBus OK)
  1883.     CF set if error
  1884.         AH = error code (03h,04h,05h,0Ah,86h) (see #0388)
  1885. Note:    this function is supported in connected mode (far CALL entry point)
  1886.       only
  1887. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h
  1888. --------X-1553B0BH06-------------------------
  1889. INT 15 - Intel System Management Bus - GET DEVICE ADDRESSES
  1890.     AX = 53B0h
  1891.     BH = 06h
  1892.     BL = position in list to report
  1893.     CH = 6941h ('iA')
  1894. Return: CF clear if successful
  1895.         AH = 00h (SMBus OK)
  1896.         BH = number of SMBus devices
  1897.         BL = SMBus Device Address of device at position BL in list
  1898.         (see #0390)
  1899.     CF set if error
  1900.         AH = error code (06h,0Ah,86h) (see #0388)
  1901. Desc:    retrieves already assigned SMBus device addresses
  1902. Notes:    this function is supported in INT 15h mode only
  1903.     bit 0 of the device address indicates read/write, so a device may
  1904.       be listed at both xxxxxxx0b and xxxxxxx1b
  1905.  
  1906. (Table 0390)
  1907. Values for System Management Bus predefined device addresses:
  1908.  10h    SMBus host
  1909.  12h    Smart Battery charger
  1910.  14h    Smart Battery selector
  1911.  16h    Smart Battery
  1912.  18h    SMBus Alert response
  1913.  50h    ACCESS.bus host
  1914.  58h    LCD contrast controller
  1915.  5Ah    CCFL backlight driver
  1916.  6Eh    ACCESS.bus default address
  1917.  80h-86h PCMCIA socket controllers
  1918.  88h    VGA graphics controller
  1919.  90h-96h unrestricted addresses
  1920.  82h    SMBus device default address
  1921. --------X-1553B0BH07-------------------------
  1922. INT 15 - Intel System Management Bus - RETRIEVE CRITICAL MESSAGES
  1923.     AX = 53B0h
  1924.     BH = 07h
  1925.     CX = 6941h ('iA')
  1926. Return: CF clear if successful
  1927.         AH = 00h (SMBus OK)
  1928.         AL = device address
  1929.         BX = device message
  1930.     CF set if error
  1931.         AH = error code (05h,07h,08h,09h,0Ah,86h) (see #0388)
  1932. Desc:    retrieves oldest queued critical message from an SMBus device to the
  1933.       host
  1934. Notes:    up to five messages are queued; if the queue is full, messages will be
  1935.       lost and error 09h returned
  1936. --------X-1553B0BH08-------------------------
  1937. INT 15 - Intel System Management Bus - RESERVED
  1938.     AX = 53B0h
  1939.     BH = 08h-0Fh
  1940. --------X-1553B0BH10-------------------------
  1941. INT 15 - Intel System Management Bus - REQUEST
  1942.     AX = 53B0h
  1943.     BH = 10h
  1944.     BL = protocol (see #0391)
  1945.     CH = device address
  1946.     CL = device command (see #0392)
  1947.     DH = MSB Data or block length (for BlockWrite)
  1948.     DL = LSB Data or first byte of block (for BlockWrite)
  1949. Return: CF clear if successful
  1950.         AH = 00h or 80h (SMBus OK)
  1951.          (80h indicates a previously unreported SMI took place)
  1952.     CF set if error
  1953.         AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h)
  1954.           (see #0388)
  1955. Desc:    request access to a device on the SMBus
  1956. SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h
  1957.  
  1958. (Table 0391)
  1959. Values for Intel System Management Bus protocol codes:
  1960.  00h    Quick Command
  1961.  01h    Send Byte
  1962.  02h    Receive Byte
  1963.  03h    Write Byte
  1964.  04h    Read Byte
  1965.  05h    Write Word
  1966.  06h    Read Word
  1967.  07h    Block Write
  1968.  08h    Block Read
  1969.  09h    Process Call
  1970.  0Ah-FFh reserved
  1971. SeeAlso: #0392
  1972.  
  1973. (Table 0392)
  1974. Values for Intel System Management Bus Smart Battery command codes:
  1975.  Cmd    Protocol(s)    Description
  1976.  00h    Rd/Wr Word    "ManufacturerAccess" implementation-specific
  1977.  01h    Rd/Wr Word    get/set Low Capacity Alarm threshold
  1978.  02h    Rd/Wr Word    get/set Remaining Time Alarm value (in minutes)
  1979.  03h    Rd/Wr Word    get/set battery characteristics (see #0393)
  1980.  04h    Rd/Wr Word    "AtRate" indicate charge/discharge rate
  1981.  05h    Read Word    "AtRateTimeToFull" time to completely charge (in min.)
  1982.  06h    Read Word    "AtRateTimeToEmpty" time to entirely discharge (min.)
  1983.  07h    Read Word    "AtRateOK" boolean: can battery supply another 10sec?
  1984.  08h    Read Word    internal battery temperature (in 0.1 Kelvins)
  1985.  09h    Read Word    current battery voltage in millivolts
  1986.  0Ah    Read Word    current flowing through battery in milliamperes
  1987.             (positive if charging, negative if discharging)
  1988.  0Bh    Read Word    average current over the past minute
  1989.  0Ch    Read Word    expected error margin in capacity computations in %
  1990.  0Dh    Read Word    predicted remaining charge as % of full charge
  1991.  0Eh    Read Word    predicted remaining charge as % of design capacity
  1992.  0Fh    Read Word    predicted remaining charge in mAh or 10mWh
  1993.  10h    Read Word    predicted full charge capacity in mAh or 10mWh
  1994.  11h    Read Word    predicted remaining battery life in minutes
  1995.             FFFFh = not discharging
  1996.  12h    Read Word    rolling average of predicted life over past minute
  1997.  13h    Read Word    rolling average of predicted charge time over past min.
  1998.             FFFFh = not charging
  1999.  14h    Read Word    get battery's desired charging current in mA
  2000.  14h    Write Word    set charging current in mA
  2001.  15h    Read Word    get battery's desired charging current in mV
  2002.  15h    Write Word    set desired charging voltage in mV
  2003.  16h    Read Word    get current battery status (see #0394)
  2004.  17h    Read Word    get number of charge/discharge cycles for battery
  2005.  18h    Read Word    get design capacity in mAh or 10mWh
  2006.  19h    Read Word    get design voltage
  2007.  1Ah    Read Word    get specification information (see #0395)
  2008.  1Bh    Read Word    get manufacture date (see #1005 at INT 21/AX=5700h)
  2009.  1Ch    Read Word    get serial number
  2010.  1Dh-1Fh        reserved
  2011.  20h    Read Block    get manufacturer's name
  2012.  21h    Read Block    get device name
  2013.  22h    Read Block    get device chemistry (see #0396)
  2014.  23h    Read Block    get manufacturer data
  2015.  24h-2Eh        reserved
  2016.  2Fh            manufacturer-specific
  2017.  30h-3Bh        reserved
  2018.  3Ch-3Fh        manufacturer-specific
  2019. Note:    bits 7-6 are reserved for addressing multiple batteries in a future
  2020.       version of the specification
  2021. SeeAlso: #0391
  2022.  
  2023. Bitfields for Smart Battery battery characteristics:
  2024. Bit(s)    Description    (Table 0393)
  2025.  0    battery has internal charge controller (read-only)
  2026.  1    primary/secondary battery support (read-only)
  2027.  6-2    reserved
  2028.  7    conditioning cycle requested
  2029.  8    internal charge controller enabled
  2030.  9    battery operating in primary mode
  2031.  13-10    reserved
  2032.  14    disable broadcast to charger
  2033.  15    report capacity in units of 10mW / 10mWh instead of mA / mAh
  2034. SeeAlso: #0392,#0394
  2035.  
  2036. Bitfields for Smart Battery battery status:
  2037. Bit(s)    Description    (Table 0394)
  2038.  15    overcharged
  2039.  14    terminate-charge alarm
  2040.  13    reserved
  2041.  12    over-temperature alarm
  2042.  11    terminate-discharge alarm
  2043.  10    reserved
  2044.  9    remaining-capacity alarm
  2045.  8    remaining-time alarm
  2046.  7    initialized
  2047.  6    charging
  2048.  5    fully charged
  2049.  4    fully discharged
  2050.  3-0    error codes
  2051.     0000 OK
  2052.     0001 busy
  2053.     0010 reserved command
  2054.     0011 unsupported command
  2055.     0100 access denied (tried to write to read-only value)
  2056.     0101 overflow/underflow
  2057.     0110 bad size
  2058.     0111 unknown error
  2059. SeeAlso: #0392,#0393,#0395
  2060.  
  2061. Bitfields for Smart Battery specification information:
  2062. Bit(s)    Description    (Table 0395)
  2063.  3-0    SmartBattery specification minor revision number
  2064.  7-4    SmartBattery specification version number
  2065.  11-8    voltage scaling (0-3, multiply voltages by 10^scale)
  2066.  15-12    current scaling (0-3, multiply currents by 10^scale)
  2067. SeeAlso: #0392,#0394
  2068.  
  2069. (Table 0396)
  2070. Values for Smart Battery device chemistry (not case-sensitive):
  2071.  "LION"    Lithium ion
  2072.  "NiMH"    Nickel metal hydride
  2073.  "PbAc"    lead-acid
  2074.  "NiCd" Nickel Cadmium
  2075.  "NiZn" Nickel Zinc
  2076.  "RAM"    rechargeable Alkaline Manganese
  2077.  "ZnAr" Zinc-Air
  2078. SeeAlso: #0392
  2079. --------X-1553B0BH11-------------------------
  2080. INT 15 - Intel System Management Bus - REQUEST CONTINUATION
  2081.     AX = 53B0h
  2082.     BH = 11h
  2083.     BL = protocol (see #0391)
  2084.     CH = device address
  2085.     CL = number of valid bytes in DX (1 or 2)
  2086.     DH = MSB Data (CL = 1 or 2)
  2087.     DL = LSB Data (CL = 2)
  2088. Return: CF clear if successful
  2089.         AH = 00h (SMBus OK)
  2090.         CL = SMBus status
  2091.         00h SMBus hardware not ready for more data
  2092.         01h SMBus hardware ready for 2 more data bytes
  2093.     CF set if error
  2094.         AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #0388)
  2095. Desc:    continue WriteBlock protocol started with function 10h
  2096. SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h
  2097. --------X-1553B0BH12-------------------------
  2098. INT 15 - Intel System Management Bus - REQUEST ABORT
  2099.     AX = 53B0h
  2100.     BH = 12h
  2101.     BL = protocol (see #0391)
  2102.     CH = device address
  2103.     CL = device command
  2104. Return: CF clear if successful
  2105.         AH = 00h (SMBus OK)
  2106.     CF set if error
  2107.         AH = error code (05h,13h,15h,16h,86h) (see #0388)
  2108. Desc:    stop the currently pending SMBus request; usually used to terminate
  2109.       a request after an SMI Detected error
  2110. --------X-1553B0BH13-------------------------
  2111. INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS
  2112.     AX = 53B0h
  2113.     BH = 13h
  2114.     BL = protocol (see #0391)
  2115.     CH = device address
  2116.     CL = device command
  2117. Return: CF clear if successful
  2118.         AH = 00h (SMBus OK)
  2119.         CH = status
  2120.         00h no data pending, transaction complete
  2121.         01h no data pending, transaction continues
  2122.         02h data pending
  2123.         CL = number of valid bytes in DX (0-2)
  2124.         DH = MSB data
  2125.         DL = LSB data
  2126.     CF set if error
  2127.         AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #0388)
  2128. Desc:    determine when a transaction is complete, gather data returned by read
  2129.       transactions
  2130. Note:    for Block Read protocol (08h), first call returns block    length in DH
  2131.       and the first byte of the block in DL
  2132. --------T-155400-----------------------------
  2133. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  2134.     AX = 5400h
  2135.     ES:BX -> device information tables
  2136.     DI:DX -> dispatcher entry point
  2137. Note:    called by OmniView to notify programs loaded before OmniView of state
  2138.       changes inside OmniView
  2139. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  2140. --------T-155401-----------------------------
  2141. INT 15 C - Omniview Multitasker - PROCESS CREATION
  2142.     AX = 5401h
  2143.     ES:BX = process handle
  2144. Note:    called by OmniView to notify programs loaded before OmniView of state
  2145.       changes inside OmniView
  2146. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  2147. --------T-155402-----------------------------
  2148. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  2149.     AX = 5402h
  2150.     ES:DX = process handle
  2151. Note:    called by OmniView to notify programs loaded before OmniView of state
  2152.       changes inside OmniView
  2153. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  2154. --------T-155403-----------------------------
  2155. INT 15 C - Omniview Multitasker - SAVE
  2156.     AX = 5403h
  2157.     ES:DX = process swapping out
  2158. Note:    called by OmniView to notify programs loaded before OmniView of state
  2159.       changes inside OmniView
  2160. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  2161. --------T-155404-----------------------------
  2162. INT 15 C - Omniview Multitasker - RESTORE
  2163.     AX = 5404h
  2164.     ES:DX = process swapping in
  2165. Note:    called by OmniView to notify programs loaded before OmniView of state
  2166.       changes inside OmniView
  2167. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  2168. --------T-155405-----------------------------
  2169. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  2170.     AX = 5405h
  2171.     ES:DX = process swapping in
  2172. Note:    called by OmniView to notify programs loaded before OmniView of state
  2173.       changes inside OmniView
  2174. SeeAlso: AX=5406h
  2175. --------T-155406-----------------------------
  2176. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  2177.     AX = 5406h
  2178.     ES:DX = process swapping in
  2179. Note:    called by OmniView to notify programs loaded before OmniView of state
  2180.       changes inside OmniView
  2181. SeeAlso: AX=5405h
  2182. --------T-155407-----------------------------
  2183. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  2184.     AX = 5407h
  2185. Note:    called by OmniView to notify programs loaded before OmniView of state
  2186.       changes inside OmniView
  2187. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  2188. --------b-1560------------------------------------
  2189. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  2190.     AH = 60h
  2191.     AL = new speed
  2192.         00h normal (8 MHz)
  2193.         01h Slow Mode 1 (4 MHz)
  2194.         02h Slow Mode 2 (2 MHz)
  2195. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  2196.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  2197. SeeAlso: AX=6301h
  2198. --------p-156000-----------------------------
  2199. INT 15 U - HP 100LX/200LX - GET MAIN BATTERY LEVEL
  2200.     AX = 6000h
  2201. Return: AX = battery level
  2202. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  2203. SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h
  2204. --------p-156001-----------------------------
  2205. INT 15 U - HP 100LX/200LX - GET BACKUP BATTERY LEVEL
  2206.     AX = 6001h
  2207. Return: AX = battery level
  2208. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  2209. SeeAlso: AX=6000h,AX=6002h
  2210. --------p-156002-----------------------------
  2211. INT 15 U - HP 100LX/200LX - GET POWER INFO
  2212.     AX = 6002h
  2213. Return: AL = power settings (see #0397)
  2214. SeeAlso: AX=6000h,AX=6003h,AX=6004h
  2215.  
  2216. Bitfields for power settings:
  2217. Bit(s)    Description    (Table 0397)
  2218.  0-1    unused ???
  2219.  2    card battery status low (OK if bit clear)
  2220.  3    battery charging off (disabled if bits 3-5 clear)
  2221.  4    battery charging slow
  2222.  5    battery charging fast
  2223.  6    power adaptor active
  2224.  7    battery type NiCad (alkaline if bit clear)
  2225. --------p-156003-----------------------------
  2226. INT 15 U - HP 100LX/200LX - SET MAIN BATTERY TYPE
  2227.     AX = 6003h
  2228.     BL = battery type
  2229.         00h alkaline
  2230.         01h NiCad
  2231. SeeAlso: AX=6000h,AX=6004h
  2232. --------p-156004-----------------------------
  2233. INT 15 U - HP 100LX/200LX - SET BATTERY CHARGING MODE
  2234.     AX = 6004h
  2235.     BL = charging
  2236.         00h disabled
  2237.         01h enabled
  2238. SeeAlso: AX=6000h,AX=6003h
  2239. --------b-1561------------------------------------
  2240. INT 15 - HUNTER 16 - GET POWER LEVEL
  2241.     AH = 61h
  2242. Return: AH = percentage of full power left (0..100)
  2243. Desc:    determine how much battery power is left
  2244. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  2245. --------b-1561-------------------------------
  2246. INT 15 U - HP 100LX/200LX - SET ANNOUNCIATORS POSITION
  2247.     AH = 61h
  2248.     AL = position (20h = left, 60h = right)
  2249. Note:    The announciators are the indicator symbols for the Shift and Fn keys
  2250.       in the bottom line
  2251. SeeAlso: AH=62h"HP",INT 16/AH=02h
  2252. --------b-1562------------------------------------
  2253. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  2254.     AH = 62h
  2255.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  2256.     BX = interval between power low warnings in seconds (1..600)
  2257. Return: AH = Status
  2258. Desc:    set the level (relative to full power) when power-low warnings begin
  2259.       and the interval between the warnings
  2260. SeeAlso: AH=61h,AH=65h,AH=66h
  2261. --------b-1562-------------------------------
  2262. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTRAST
  2263.     AH = 62h
  2264.     BL = contrast (00h-1Fh, 1Fh is the darkest)
  2265. SeeAlso: AH=47h"HP",AH=61h"HP"
  2266. --------b-156300----------------------------------
  2267. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  2268.     AX = 6300h
  2269. Return: AH = status
  2270.     BX = timeout in seconds (0-3600)
  2271. Desc:    get the idle timeout value, the interval without keyboard or
  2272.        communications activity before the system shuts down
  2273. SeeAlso: AX=6301h
  2274. --------b-156301----------------------------------
  2275. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  2276.     AX = 6301h
  2277.     BX = timeout in seconds (0-3600)
  2278. Desc:    sets the idle timeout value, the interval without keyboard or
  2279.       communications activity before the system shuts down
  2280. SeeAlso: AX=6300h
  2281. --------b-1564------------------------------------
  2282. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  2283.     AH = 64h
  2284.     AL = new state
  2285.         00h disable Resume mode
  2286.         01h enable Resume mode
  2287. Return: AH = status
  2288. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  2289.       the application that was running when it shut down as if nothing
  2290.       had happened.
  2291. SeeAlso: AH=67h,AH=68h,AH=69h
  2292. --------b-1565------------------------------------
  2293. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  2294.     AH = 65h
  2295.     AL = charging level
  2296.         01h charging not allowed
  2297.         02h charging allowed until power down
  2298.         03h charging allowed until batteries changed or fail.
  2299.         Ask user if charging is still allowed on next poweron
  2300.         04h charging allowed indefinitely
  2301.     BX = 0203h
  2302.     CX = 0405h
  2303.     DX = 0607h
  2304. Return: AH = status
  2305. SeeAlso: AH=66h,AH=68h
  2306. --------b-1566------------------------------------
  2307. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  2308.     AH = 66h
  2309.     AL = level in percent of maximum (0..100)
  2310. Return: AH = status
  2311. SeeAlso: AH=61h,AH=65h
  2312. --------b-1567------------------------------------
  2313. INT 15 - HUNTER 16 - CONTROL STOP MODE
  2314.     AH = 67h
  2315.     AL = mode when waiting for input
  2316.         00h use STOP mode (allows communication)
  2317.         01h use HALT mode (disallows communication)
  2318. Return: AH = status
  2319. Desc:    select the power save mode to use when waiting for input
  2320. SeeAlso: AH=69h
  2321. --------b-1568------------------------------------
  2322. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  2323.     AH = 68h
  2324. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  2325. SeeAlso: AH=69h
  2326. --------b-1569------------------------------------
  2327. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  2328.     AH = 69h
  2329.     AL = mode
  2330.         00h inhibit power down
  2331.         01h allow power down
  2332. Return: AH = status
  2333. SeeAlso: AH=67h,AH=68h,AH=6Ah
  2334. --------b-156A------------------------------------
  2335. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  2336.     AH = 6Ah
  2337.     AL = mode
  2338.         00h inhibit Slow mode
  2339.         01h allow Slow mode
  2340. Return: AH = status
  2341. SeeAlso: AH=69h
  2342. --------b-156B------------------------------------
  2343. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  2344.     AH = 6Bh
  2345. Return: BH = version number (ASCII)
  2346.     BL = release number (ASCII)
  2347.     CH = major??? release number (ASCII)
  2348.     CL = minor??? release number (ASCII)
  2349. SeeAlso: AH=6Ch
  2350. --------b-156C------------------------------------
  2351. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  2352.     AH = 6Ch
  2353. Return: BL:CX = BCD serial number
  2354. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  2355.       different number can be stored (see AH=72h)
  2356. SeeAlso: AH=6Bh,AH=72h
  2357. --------b-156D------------------------------------
  2358. INT 15 - HUNTER 16 - GET EVENT DETAIL
  2359.     AH = 6Dh
  2360. Return: AH = 00h if successful
  2361.     CX:BX = event flags bit 0..31 (see #0398)
  2362. Note:    this function allows testing for events
  2363. SeeAlso: AH=6Eh,AH=6Fh
  2364.  
  2365. Bitfields for HUNTER 16 events:
  2366. Bit(s)    Description    (Table 0398)
  2367.  6    RI received
  2368.  5    RTC Alarm
  2369.  4    data received on COM2
  2370.  3    data received on COM1
  2371.  2    error on COM2
  2372.  1    error on COM1
  2373.  0    PWR button pressed
  2374. --------b-156E------------------------------------
  2375. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  2376.     AH = 6Eh
  2377.     AL = Software Interrupt
  2378.           00h  do not trap event
  2379.           else trap as software interrupt number AL
  2380.     BH = event number (see AH=6Dh)
  2381.     BL = enable mask
  2382.         00h disable event
  2383.         01h enable event
  2384. Return: AH = 00h if successful
  2385. SeeAlso: AH=6Dh,AH=6Fh
  2386. --------b-156F------------------------------------
  2387. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  2388.     AH = 6Fh
  2389.     AL = event number (see AH=6Dh)
  2390. Return: AH = 00h if successful
  2391. Desc:    Acknowledges the event, so the next similar event can be detected
  2392. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  2393. --------b-1570------------------------------------
  2394. INT 15 - HUNTER 16 - CONTROL SOUND
  2395.     AH = 70h
  2396.     AL = new state
  2397.         00h disable sound
  2398.         else enable sound
  2399. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  2400.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  2401. --------x-157000-----------------------------
  2402. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  2403.     AX = 7000h
  2404.     BL = number of word to read (00h-3Fh)
  2405. Return: CF clear if function supported
  2406.         DX = contents of EEPROM word
  2407. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  2408.       the clock chip to store system configuration information
  2409. SeeAlso: AX=7001h
  2410. --------x-157001-----------------------------
  2411. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  2412.     AX = 7001h
  2413.     BL = number of word to read (00h-3Fh)
  2414.     DX = new value for EEPROM word
  2415. Return: CF clear if function supported
  2416. Note:    the EEPROMs are normally written only by the system setup program;
  2417.       changing the values can badly mess up a Tandy
  2418. SeeAlso: AX=7000h
  2419. ----------157002-----------------------------
  2420. INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE
  2421.     AX = 7002h
  2422. Return: AL = ROM page mapped at 0E0000h (0-6 (13?))
  2423. Note:    some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  2424.       BIOS uses this call to determine what ROM page is mapped in the 64k
  2425.       segment at 0E0000h.
  2426.     the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  2427.       0F0000h.  There may be 16 32k ROM pages on other systems.
  2428. SeeAlso: AX=7003h,INT E0"DeskMate"
  2429. ----------157003-----------------------------
  2430. INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE
  2431.     AX = 7003h
  2432.     DL = ROM page to be mapped at 0E0000h (0-6 (13?))
  2433. Return: CF clear if valid ROM page specified
  2434. Note:    Some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  2435.       BIOS uses this call to map ROM pages in the 64k segment at 0E0000h.
  2436.     The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  2437.       0F0000h.  There may be 16 32k ROM pages on other systems.
  2438. SeeAlso: AX=7002h,INT E0"DeskMate"
  2439. --------b-1571------------------------------------
  2440. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  2441.     AH = 71h
  2442.     BL = column
  2443.     BH = row
  2444.     AL = column switch (00h disable, 01h enable)
  2445.     CL = row switch (00h disable, 01h enable)
  2446. Return: AH = status
  2447. SeeAlso: AH=7Bh,AH=88h
  2448. --------b-157200----------------------------------
  2449. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  2450.     AX = 7200h
  2451. Return: AH = 00h if successful
  2452. Desc:    reset the serial number to the default serial number present when the
  2453.       Hunter 16 was shipped
  2454. SeeAlso: AH=6Ch,AH=72h
  2455. --------b-1572------------------------------------
  2456. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  2457.     AH = 72h
  2458.     AL nonzero
  2459.     DS:BX -> new serial number (6 ASCII digits)
  2460. Return: AH = 00h if successful
  2461. Desc:    install a new serial number
  2462. SeeAlso: AH=6Ch,AX=7200h
  2463. --------b-1573------------------------------------
  2464. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  2465.     AH = 73h
  2466.     AL = drive (0: A:, 1: B:)
  2467. Return: AH = status
  2468.         00h successful
  2469.         FFh Oracle GT drive not connected
  2470.     AL = power level in percent of maximum (0..100)
  2471. Desc:    get the power remaining in the Oracle GT batteries
  2472. SeeAlso: AH=61h
  2473. --------b-1574------------------------------------
  2474. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  2475.     AH = 74h
  2476.     AL = new level
  2477.         01h off
  2478.         02h unchanged
  2479.         03h change level
  2480.         BL = desired level (00h-7Fh)
  2481. Return: AH = status
  2482. Desc:    select the backlight level to use when the Hunter is next turned on
  2483. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  2484. --------b-1575------------------------------------
  2485. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  2486.     AH = 75h
  2487.     AL = new level
  2488.         01h off
  2489.         02h unchanged
  2490.         03h change level
  2491.         BL = desired level (00h-7Fh)
  2492. Return: AH = status
  2493. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  2494. SeeAlso: AH=63h,AH=74h
  2495. --------b-1576------------------------------------
  2496. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  2497.     AH = 76h
  2498.     BX = power save control (see #0399)
  2499. SeeAlso: AH=74h
  2500.  
  2501. Bitfields for HUNTER 16 power save control:
  2502. Bit(s)    Description    (Table 0399)
  2503.  0    power save enabled
  2504.  1    inhibit power save when waiting for COM1 data
  2505.  2    inhibit power save when waiting for COM2 data
  2506.  3    inhibit power save when waiting for data from barcode wand
  2507.  4    inhibit power up on timer tick
  2508. --------b-1579------------------------------------
  2509. INT 15 - HUNTER 16 - REDIRECT LPT1
  2510.     AH = 79h
  2511.     AL = port to which to redirect (00h COM1, 01h COM2)
  2512. --------b-157A------------------------------------
  2513. INT 15 - HUNTER 16 - INVOKE HOT KEY
  2514.     AH = 7Ah
  2515. Desc:    this function has the same effect as pressing the HOT key
  2516. SeeAlso: AH=7Bh
  2517. --------b-157B------------------------------------
  2518. INT 15 - HUNTER 16 - CONTROL HOT KEY
  2519.     AH = 7Bh
  2520.     AL = 00h prevent HOT key
  2521.         else allow HOT key
  2522. Desc:    Allow or prevent the HOT key function which is used to examine and
  2523.       change the Hunter setup
  2524. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  2525. --------b-157C------------------------------------
  2526. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  2527.     AH = 7Ch
  2528.     AL = 00h prevent HOT key power option
  2529.         else allow HOT key power option
  2530. Desc:    allow or prevent changing the power options
  2531. SeeAlso: AH=7Bh,AH=7Dh
  2532. --------b-157D------------------------------------
  2533. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  2534.     AH = 7Dh
  2535.     AL = 00h turn off after 10 warnings
  2536.         else never turn off
  2537. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  2538. SeeAlso: AH=7Ch
  2539. --------b-157E------------------------------------
  2540. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  2541.     AH = 7Eh
  2542.     AL = 00h do not prompt
  2543.         else prompt
  2544. Desc:    select whether the user is prompted for the battery state if the
  2545.       battery cap has been off when the system is turned on
  2546. SeeAlso: AH=7Fh
  2547. --------b-157F------------------------------------
  2548. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  2549.     AH = 7Fh
  2550.     AL = battery type
  2551.         00h     non-rechargeable
  2552.         else rechargeable
  2553. SeeAlso: AH=7Eh
  2554. --------B-1580-------------------------------
  2555. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  2556.     AH = 80h
  2557.     BX = device ID
  2558.     CX = process ID
  2559.     CF clear
  2560. Return: CF clear if successful
  2561.         AH = 00h
  2562.     CF set on error
  2563.         AH = status (see #0400)
  2564. Note:    this function should be hooked by a multitasker which wishes to keep
  2565.       track of device ownership; the default BIOS handler merely returns
  2566.       successfully
  2567. SeeAlso: AH=81h,AH=82h
  2568.  
  2569. (Table 0400)
  2570. Values for status:
  2571.  80h    invalid command (PC,PCjr)
  2572.  86h    function not supported (XT)
  2573. --------b-1580------------------------------------
  2574. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  2575.     AH = 80h
  2576.     AL = function
  2577.         00h get
  2578.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  2579.         else set
  2580.         BL = battery capacity (same as AL above)
  2581. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  2582. --------B-1581-------------------------------
  2583. INT 15 C - OS HOOK - DEVICE CLOSE
  2584.     AH = 81h
  2585.     BX = device ID
  2586.     CX = process ID
  2587.     CF clear
  2588. Return: CF clear if successful
  2589.         AH = 00h
  2590.     CF set on error
  2591.         AH = status (see #0400)
  2592. Note:    this function should be hooked by a multitasker which wishes to keep
  2593.       track of device ownership; the default BIOS handler merely returns
  2594.       successfully
  2595. SeeAlso: AH=80h,AH=82h
  2596. --------b-1581------------------------------------
  2597. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  2598.     AH = 81h
  2599.     AL = new state of power output (00h off, nonzero on)
  2600. Desc:    turn the +5V low power output on or off
  2601. SeeAlso: AH=80h"HUNTER"
  2602. --------B-1582-------------------------------
  2603. INT 15 C - OS HOOK - PROGRAM TERMINATION
  2604.     AH = 82h
  2605.     BX = process ID
  2606.     CF clear
  2607. Return: CF clear if successful
  2608.         AH = 00h
  2609.     CF set on error
  2610.         AH = status (see #0400)
  2611. Notes:    closes all devices opened by the given process ID with function 80h
  2612.     this function should be hooked by a multitasker which wishes to keep
  2613.       track of device ownership; the default BIOS handler merely returns
  2614.       successfully
  2615. SeeAlso: AH=80h,AH=81h
  2616. --------b-1582------------------------------------
  2617. INT 15 - HUNTER 16 - SOUND OUTPUT
  2618.     AH = 82h
  2619.     DX = length (duration in seconds = DX * 666670 / frequency)
  2620.     BX = pitch (see #0401)
  2621. Desc:    Sound the tone specified in BX for the duration in DX
  2622. SeeAlso: AX=1019h
  2623.  
  2624. (Table 0401)
  2625. Values for HUNTER 16 sound pitch:
  2626. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  2627.   425    G    1568.000     1515    A     440.000
  2628.   451    F#    1479.503     1605    G#     415.307
  2629.   477    F    1396.900     1701    G     392.000
  2630.   506    E    1318.500     1802    F#     369.998
  2631.   536    D#    1244.523     1909    F     349.230
  2632.   568    D    1174.700     2022    E     329.630
  2633.   601    C#    1108.749     2143    D#     311.127
  2634.   637    C    1046.500     2270    D     293.660
  2635.   675    B     958.770     2405    C#     277.183
  2636.   715    A#     932.329     2548    MID C     261.630
  2637.   758    A     880.000     2700    B     246.940
  2638.   803    G#     830.609     2860    A#     233.081
  2639.   850    G     783.990     3030    A     220.000
  2640.   901    F#     739.990     3210    G#     207.654
  2641.   954    F     698.460     3401    G     196.000
  2642.  1011    E     659.260     3604    F#     184.996
  2643.  1071    D#     622.257     3818    F     174.610
  2644.  1135    D     587.330     4045    E     164.810
  2645.  1203    C#     554.365     4286    D#     155.560
  2646.  1274    C     523.250     4540    D     146.830
  2647.  1350    B     493.880     4668    C#     142.827
  2648.  1430    A#     466.162     4803    C     138.810
  2649. --------B-1583-------------------------------
  2650. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  2651.     AH = 83h
  2652.     AL = subfunction
  2653.         00h set interval
  2654.         CX:DX = microseconds to delay
  2655.         ES:BX -> byte whose high bit is to be set at end of interval
  2656.         01h cancel wait interval
  2657. Return: CF set on error or function already busy
  2658.         AH = status
  2659.         80h invalid command (PC,PCjr)
  2660.         86h function not supported (XT and later)
  2661.     CF clear if successful
  2662. Notes:    the resolution of the wait period is 977 microseconds on most systems
  2663.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  2664.       real-time clock chip which is available on INT 70
  2665.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  2666. SeeAlso: AH=41h,AH=86h,INT 70
  2667. --------b-1583------------------------------------
  2668. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  2669.     AH = 83h
  2670.     AL = state of LCD window (00h disabled, nonzero enabled)
  2671. Desc:    Enable/disable the facility where the displayed window tracks the
  2672.       cursor output to keep the focus visible
  2673. --------B-1584-------------------------------
  2674. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  2675.     AH = 84h
  2676.     DX = subfunction
  2677.         0000h read joystick switches
  2678.         Return: AL bits 7-4 = switch settings
  2679.         0001h read positions of joysticks
  2680.         Return: AX = X position of joystick A
  2681.             BX = Y position of joystick A
  2682.             CX = X position of joystick B
  2683.             DX = Y position of joystick B
  2684. Return: CF set on error
  2685.         AH = status (see #0400)
  2686.     CF clear if successful
  2687. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  2688.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  2689.     a 250kOhm joystick typically returns 0000h-01A0h
  2690. SeeAlso: AH=84h"V20-XT-BIOS"
  2691. --------b-1584-------------------------------
  2692. INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT
  2693.     AH = 84h
  2694.     DX = subfunction
  2695.         0000h read joystick switches
  2696.         Return: AL bits 7-4 = switch settings
  2697.         other: read positions of joysticks as indicated by bits 0-3
  2698.         Return: AX = X position of joystick A (if DX bit 0 set)
  2699.             BX = Y position of joystick A (if DX bit 1 set)
  2700.             CX = X position of joystick B (if DX bit 2 set)
  2701.             DX = Y position of joystick B (if DX bit 3 set)
  2702. Return: CF set on error
  2703.         AH = status (see #0400)
  2704.     CF clear if successful
  2705. Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
  2706.        Koehlmann / c't magazine
  2707. SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh
  2708. --------b-158400----------------------------------
  2709. INT 15 - HUNTER 16 - GET DISKETTE PORT
  2710.     AX = 8400h
  2711.     BH = Drive (0: A:, 1: B:)
  2712. Return: AL = Port (0: COM1, >0: COM2)
  2713. Desc:    return the COM port used for the floppy drive
  2714. SeeAlso: AX=8401h
  2715. --------b-158401----------------------------------
  2716. INT 15 - HUNTER 16 - SET DISKETTE PORT
  2717.     AX = 8401h
  2718.     BH = Drive (0: A:, 1: B:)
  2719.     BL = Port (0: COM1, >0: COM2)
  2720. Desc:    set the COM port used for the floppy drive
  2721. SeeAlso: AX=8400h
  2722. --------B-1585-------------------------------
  2723. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  2724.     AH = 85h
  2725.     AL = SysReq key action (00h pressed, 01h released)
  2726.     CF clear
  2727. Return: CF clear if successful
  2728.         AH = 00h
  2729.     CF set on error
  2730.         AH = status (see #0400)
  2731. Notes:    called by keyboard decode routine
  2732.     the default handler simply returns successfully; programs which wish
  2733.       to monitor the SysReq key must hook this call
  2734.     the SysReq key is often labeled SysRq
  2735. SeeAlso: INT 09
  2736. --------b-158500----------------------------------
  2737. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  2738.     AX = 8500h
  2739. Desc:    restore the standard power menu
  2740. SeeAlso: AX=8501h"HUNTER"
  2741. --------b-158501----------------------------------
  2742. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  2743.     AX = 8501h
  2744.     BL = user software interrupt number
  2745. Desc:    install an alternate power menu routine
  2746. SeeAlso: AX=8500h"HUNTER"
  2747. --------B-1586-------------------------------
  2748. INT 15 - BIOS - WAIT (AT,PS)
  2749.     AH = 86h
  2750.     CX:DX = interval in microseconds
  2751. Return: CF clear if successful (wait interval elapsed)
  2752.     CF set on error or AH=83h wait already in progress
  2753.         AH = status (see #0400)
  2754. Note:    the resolution of the wait period is 977 microseconds on most systems
  2755.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  2756.       real-time clock chip which is available on INT 70
  2757. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  2758. --------b-1586------------------------------------
  2759. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  2760.     AH = 86h
  2761.     AL = function (00h get, nonzero set)
  2762.     BX = 1234h
  2763.     DS:SI -> 256-byte Attribute buffer
  2764. Note:    In text modes each character has its attribute byte XOR'd with the
  2765.       corresponding byte in the attribute table.  If the attribute is 15,
  2766.       15 is XOR'd with Table[15]
  2767. --------B-1587-------------------------------
  2768. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  2769.     AH = 87h
  2770.     CX = number of words to copy (max 8000h)
  2771.     ES:SI -> global descriptor table (see #0403)
  2772. Return: CF set on error
  2773.     CF clear if successful
  2774.     AH = status (see #0402)
  2775. Notes:    copy is done in protected mode with interrupts disabled by the default
  2776.       BIOS handler; many 386 memory managers perform the copy with
  2777.       interrupts enabled
  2778.     this function is incompatible with the OS/2 compatibility box
  2779. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  2780.  
  2781. (Table 0402)
  2782. Values for extended-memory copy status:
  2783.  00h    source copied into destination
  2784.  01h    parity error
  2785.  02h    interrupt error
  2786.  03h    address line 20 gating failed
  2787.  80h    invalid command (PC,PCjr)
  2788.  86h    unsupported function (XT,PS30)
  2789.  
  2790. Format of global descriptor table:
  2791. Offset    Size    Description    (Table 0403)
  2792.  00h 16 BYTEs    zeros (used by BIOS)
  2793.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  2794.  12h  3 BYTEs    24-bit linear source address, low byte first
  2795.  15h    BYTE    source segment access rights (93h)
  2796.  16h    WORD    zero
  2797.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  2798.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  2799.  1Dh    BYTE    destination segment access rights (93h)
  2800.  1Eh 18 BYTEs    zeros (used by BIOS)
  2801. --------b-1587------------------------------------
  2802. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  2803.     AH = 87h
  2804.     DS:DX = new service routine
  2805. Desc:    set the INT 72h vector which is called in 2 cases:
  2806.       - when the machine is about to turn off or reboot, INT 72h is called
  2807.         with AH=0
  2808.       - when the machine is powering up INT 72h is called with AH=01h
  2809. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  2810. --------B-1588-------------------------------
  2811. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  2812.     AH = 88h
  2813. Return: CF clear if successful
  2814.         AX = number of contiguous KB starting at absolute address 100000h
  2815.     CF set on error
  2816.         AH = status
  2817.         80h invalid command (PC,PCjr)
  2818.         86h unsupported function (XT,PS30)
  2819. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  2820.       this call, and return a reduced memory size.    They are then free to
  2821.       use the memory between the new and old sizes at will.
  2822.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  2823.       for memory beyond 16MB
  2824.     not all BIOSes correctly return the carry flag, making this call
  2825.       unreliable unless one first checks whether it is supported through
  2826.       a mechanism other than calling the function and testing CF
  2827. SeeAlso: AH=87h,AH=8Ah"Phoenix",AH=C7h,AX=DA88h
  2828. --------b-1588------------------------------------
  2829. INT 15 - HUNTER 16 - GET POWER UP KEYS
  2830.     AH = 88h
  2831. Return: AH = 00h
  2832.     BX = column
  2833.     CL = row
  2834. SeeAlso: AH=71h
  2835. --------B-1589-------------------------------
  2836. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  2837.     AH = 89h
  2838.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  2839.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  2840.     ES:SI -> GDT for protected mode (see #0404)
  2841. Return: CF set on error
  2842.        AH = FFh  error enabling address line 20
  2843.     CF clear if successful
  2844.        AH = 00h
  2845.        in protected mode at specified address
  2846. Notes:    BL and BH must be multiples of 8
  2847.     the protected-mode CS must reference the same memory as the CS this
  2848.       function is called from because execution continues with the address
  2849.       following the interrupt call
  2850. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  2851.  
  2852. Format of BIOS switch-to-protected-mode Global Descriptor Table:
  2853. Offset    Size    Description    (Table 0404)
  2854.  00h  8 BYTEs    null descriptor (initialize to zeros)
  2855.  08h  8 BYTEs    GDT descriptor (see #0405)
  2856.  10h  8 BYTEs    IDT descriptor
  2857.  18h  8 BYTEs    DS descriptor
  2858.  20h  8 BYTEs    ES
  2859.  28h  8 BYTEs    SS
  2860.  30h  8 BYTEs    CS
  2861.  38h  8 BYTEs    uninitialized, used to build descriptor for BIOS CS
  2862.  
  2863. Format of segment descriptor table entry:
  2864. Offset    Size    Description    (Table 0405)
  2865.  00h    WORD    segment limit, low word
  2866.  02h  3 BYTEs    segment base address, low 24 bits
  2867.  05h    BYTE    access mode (see #0406)
  2868.  06h    BYTE    386+ extended access mode (see #0407)
  2869.  07h    BYTE    386+ segment base address, high 8 bits
  2870. SeeAlso: #0404,INT 2C/AX=0002h,INT 31/AX=0009h
  2871.  
  2872. Bitfields for segment descriptor table access mode field:
  2873. Bit(s)    Description    (Table 0406)
  2874.  3-0    segment type
  2875.  4    descriptor type (1 = application, 0 = system)
  2876.  6-5    descriptor privilege level
  2877.  7    segment is present in RAM
  2878. SeeAlso: #0405,#0407
  2879.  
  2880. Bitfields for 386+ segment descriptor table extended access mode field:
  2881. Bit(s)    Description    (Table 0407)
  2882.  3-0    high 4 bits of segment limit
  2883.  4    available
  2884.  5    reserved (0)
  2885.  6    default operation size (1 = 32 bits, 0 = 16 bits)
  2886.  7    granularity (1 = 4K, 0 = byte)
  2887. SeeAlso: #0405,#0406,#1892
  2888. --------b-158900----------------------------------
  2889. INT 15 - HUNTER 16 - GET POWER MODE
  2890.     AX = 8900h
  2891. Return: AH = 00h
  2892.     BL = current power mode
  2893.         00h Standard Power Mode (SPM)
  2894.         01h Advanced Power Mode (APM)
  2895. SeeAlso: AX=8901h
  2896. --------b-158901----------------------------------
  2897. INT 15 - HUNTER 16 - SET POWER MODE
  2898.     AX = 8901h
  2899.     BL = new mode
  2900.         00h Standard Power Mode (SPM)
  2901.         01h Advanced Power Mode (APM)
  2902. Return: AH = 00h
  2903. SeeAlso: AX=8900h
  2904. --------b-158A------------------------------------
  2905. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  2906.     AH = 8Ah
  2907.     AL = new state of Power Input (00h disabled, nonzero enabled)
  2908.     SI = 1234h
  2909.     DI = 5678h
  2910. Return: AH = status
  2911.         00h success
  2912.         FFh failure
  2913. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  2914.       adapter will neither charge the batteries nor supply power to the
  2915.       Hunter 16. Disable Power Input if using Alkaline batteries.
  2916. --------b-158A-------------------------------
  2917. INT 15 - Phoenix BIOS v4.0 - GET BIG MEMORY SIZE
  2918.     AH = 8Ah
  2919. Return: DX:AX = extended memory size in K
  2920. SeeAlso: AH=88h,AX=E801h,AX=E820h
  2921. --------b-158B------------------------------------
  2922. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  2923.     AH = 8Bh
  2924.     AL = function
  2925.         00h get
  2926.         Return:    BH = Maximum charging temperature
  2927.                 Temp = -20 + (n * 0.63) degrees Centigrade
  2928.             BL = Minimum charging temperature
  2929.         else set
  2930.         BH = maximum charging temperature (as above)
  2931.         BL = minimum charging temperature (as above)
  2932. Return: AH = status
  2933.         00h success
  2934.         FFh failure
  2935. Desc:    get/set the temperature interval within which the charger should
  2936.       operate
  2937. --------b-158C------------------------------------
  2938. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  2939.     AH = 8Ch
  2940.     AL = function
  2941.         00h get
  2942.         Return: BX = which operations disable power save (see #0408)
  2943.         else set
  2944.         BX = which operations should disable power save (see #0408)
  2945. SeeAlso: AH=8Dh
  2946.  
  2947. Bitfields for HUNTER 16 operations disabling power save:
  2948. Bit(s)    Description    (Table 0408)
  2949.  0    INT 10h prevents power save
  2950.  1    INT 13h prevents power save
  2951.  2    INT 14h prevents power save
  2952.  3    INT 15h prevents power save
  2953.  4    INT 1Ah prevents power save
  2954.  5    INT 21h prevents power save
  2955.  6    direct write to video RAM prevents power save
  2956.  7    access to 8250 UART prevents power save
  2957.  8    access to 8253 (Sound) prevents power save
  2958. --------b-158D------------------------------------
  2959. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  2960.     AH = 8Dh
  2961.     AL = function
  2962.         00h get
  2963.         Return: AL = Fast Charge state (00h prevented, else allowed)
  2964.         nonzero set
  2965.         BH = Fast Charge state (00h prevent, nonzero allow)
  2966. Return: AH = status
  2967.         00h success
  2968.         FFh failure
  2969. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  2970. SeeAlso: AH=8Ch
  2971. --------B-1590-------------------------------
  2972. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  2973.     AH = 90h
  2974.     AL = device type (see #0409)
  2975.     ES:BX -> request block for type codes 80h through BFh
  2976.     CF clear
  2977. Return: CF set if wait time satisfied
  2978.     CF clear if driver must perform wait
  2979.         AH = 00h
  2980. Notes:    type codes are allocated as follows:
  2981.       00-7F non-reentrant devices; OS must arbitrate access
  2982.       80-BF reentrant devices; ES:BX points to a unique control block
  2983.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  2984.     floppy and hard disk BIOS code uses this call to implement a timeout;
  2985.       for device types 00h and 01h, a return of CF set means that the
  2986.       timeout expired before the disk responded.
  2987.     this function should be hooked by a multitasker to allow other tasks
  2988.       to execute while the BIOS is waiting for I/O completion; the default
  2989.       handler merely returns with AH=00h and CF clear
  2990. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  2991.  
  2992. (Table 0409)
  2993. Values for device type:
  2994.  00h    disk
  2995.  01h    diskette
  2996.  02h    keyboard
  2997.  03h    PS/2 pointing device
  2998.  21h    waiting for keyboard input (Phoenix BIOS)
  2999.  80h    network
  3000.  FBh    digital sound (Tandy)
  3001.  FCh    disk reset (PS)
  3002.  FDh    diskette motor start
  3003.  FEh    printer
  3004. --------B-1591-------------------------------
  3005. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  3006.     AH = 91h
  3007.     AL = device type (see #0409)
  3008.     ES:BX -> request block for type codes 80h through BFh
  3009.     CF clear
  3010. Return: AH = 00h
  3011. Note:    this function should be hooked by a multitasker to allow other tasks
  3012.       to execute while the BIOS is waiting for I/O completion; the default
  3013.       handler merely returns with AH=00h and CF clear
  3014. SeeAlso: AH=90h
  3015. --------x-15A100-----------------------------
  3016. INT 15 U - AMI PCI BIOS - SET ??? FLAG
  3017.     AX = A100h
  3018. Return: AX = 0000h
  3019.     CF clear
  3020.     BX,CX,DI may be destroyed
  3021. Desc:    sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
  3022.       locations 3Eh and 3Fh
  3023. Notes:    in the examined version of the BIOS, nonzero values in AL cause it to
  3024.       drop through to checking the next possible value of AH, i.e. only
  3025.       subfunction 00h is supported
  3026.     also supported by Dell XPS P90 and IBM PS/PV 6384, which also use
  3027.       AMI BIOSes
  3028. ----------15B001CX5354-----------------------
  3029. INT 15 - Stac ??? - INSTALLATION CHECK
  3030.     AX = B001h
  3031.     CX = 5354h ('ST')
  3032.     DX = 4143h ('AC')
  3033. Return: AX = 4F4Bh ('OK') if installed
  3034. Note:    this function is called by Novell DOS 7 NWCACHE v1.01
  3035. --------n-15BA10-----------------------------
  3036. INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT
  3037.     AX = BA10h
  3038.     BL = event
  3039.        00h the pen left control areas
  3040.        01h the pen entered the Brightness- area
  3041.        02h the pen entered the Brightness+ area
  3042.        03h the pen entered the Contrast- area
  3043.        04h the pen entered the Contrast+ area
  3044. Return: CF clear if successfully processed
  3045.     CF set on error (function not supported, ie. not an OmniShare BIOS)
  3046. Note:    The pen driver is responsible for detecting when the pen enters and
  3047.       leaves control areas of the OmniShare tablet, and notifying the BIOS.
  3048.     The BIOS manages the events, including the autorepetition, and sets
  3049.       the status LEDs.
  3050. SeeAlso: AX=BA20h,AX=BA13h
  3051. --------n-15BA11-----------------------------
  3052. INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE
  3053.     AX = BA11h
  3054.     BL = new LED state (00h steady, 01h flashing)
  3055. Return: CF clear if successful
  3056.     CF set on error
  3057. Note:    this function is for use by communication software to give visual
  3058.       feedback of active communications even if the display is in standby
  3059.       mode.
  3060. SeeAlso: AX=BA10h,AX=BA24h
  3061. --------n-15BA12-----------------------------
  3062. INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE
  3063.     AX = BA12h
  3064.     BL = new battery state (00h good, 01h low charge)
  3065. Return: CF set on error
  3066.     CF clear if successfully stored in CMOS
  3067. Note:    The last report will be displayed by the Power-On Self Test the next
  3068.       time the OmniShare boots.  This allows something meaningful to be
  3069.       reported even if the pen is not detected during the POST.
  3070. SeeAlso: AX=BA13h
  3071. --------n-15BA13-----------------------------
  3072. INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE
  3073.     AX = BA13h
  3074. Return: CF clear if successful
  3075.         BL = pen battery state (00h good, 01h low charge)
  3076.     CF set on error
  3077. Note:    returns the last value set by AX=BA12h.
  3078. SeeAlso: AX=BA12h
  3079. --------p-15BA20-----------------------------
  3080. INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK
  3081.     AX = BA20h
  3082. Return: CF clear if successful (installed)
  3083.     CF set on error (not installed)
  3084. Notes:    The display controller can enter a standby mode after a given timeout,
  3085.       to conserve power or (for the OmniShare) to increase the life of
  3086.       the backlight.
  3087.     A side effect of standby mode is that the communications LED turns on
  3088.       automatically when the display is in standby mode.  This is done in
  3089.       hardware, and is intended to show that the unit is still on.
  3090. SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h
  3091. --------p-15BA21-----------------------------
  3092. INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION
  3093.     AX = BA21h
  3094.     BL = new timeout before standby mode in minutes (01h-0Fh)
  3095.         00h to disable automatic switch to standby mode
  3096. Return: CF clear if successful
  3097.     CF set on error (function not supported)
  3098. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  3099.       instead of (N*60) seconds as documented.
  3100. SeeAlso: AX=BA20h,AX=BA22h
  3101. --------p-15BA22-----------------------------
  3102. INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION
  3103.     AX = BA22h
  3104. Return: CF clear if successful
  3105.        BL = standy duration in minutes (01h-0Fh), or 00h if disabled
  3106.     CF set on error (function not supported)
  3107. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  3108.       instead of (N*60) seconds as documented.
  3109. SeeAlso: AX=BA20h,AX=BA21h
  3110. --------p-15BA23-----------------------------
  3111. INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY
  3112.     AX = BA23h
  3113. Return: CF clear if successful
  3114.     CF set on error
  3115. SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h
  3116. --------p-15BA24-----------------------------
  3117. INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY
  3118.     AX = BA24h
  3119. Return: CF clear if successful
  3120.     CF set on error
  3121. Note:    This function is not implemented yet. Reserved for future versions
  3122.       of the OmniShare.
  3123. SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h
  3124. --------p-15BA25-----------------------------
  3125. INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL
  3126.     AX = BA25h
  3127. Return: CF clear if successful
  3128.         AX = 25BAh
  3129.         BX = PSP of STANDBY.COM resident portion
  3130.         DX:CX -> previous INT 15 handler
  3131.     CF set on error
  3132. Note:    This function is used internally by the STANDBY.COM /u option, and
  3133.       should not be used by application programs.
  3134. SeeAlso: AX=BA20h
  3135. --------p-15BA26-----------------------------
  3136. INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE?
  3137.     AX = BA26h
  3138. Return: CF clear if successful
  3139.         AL    = display state (00h active, 01h in standby mode)
  3140.     CF set on error (function not supported)
  3141. SeeAlso: AX=BA20h,AX=BA23h
  3142. --------p-15BA27-----------------------------
  3143. INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS
  3144.     AX = BA27h to BA2Fh
  3145. Desc:    reserved for future use
  3146. --------b-15BC-------------------------------
  3147. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  3148.     AH = BCh
  3149. Return: CF clear
  3150.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  3151.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  3152. Note:    this function reads system timer channel 0 twice, then does
  3153.       calculations on the returned values to determine the delay loop
  3154.       counter needed by the BIOS for beeps and floppy timeouts
  3155. SeeAlso: AX=2305h
  3156. --------E-15BF00-----------------------------
  3157. INT 15 - Rational Systems DOS/16M - ???
  3158.     AX = BF00h
  3159.     ???
  3160. Return: ???
  3161. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  3162. SeeAlso: AX=BF02h
  3163. --------E-15BF01-----------------------------
  3164. INT 15 - Rational Systems DOS/16M - ???
  3165.     AX = BF01h
  3166.     ???
  3167. Return: ???
  3168. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  3169.     called by DOS/4GW
  3170. SeeAlso: AX=BF00h,AX=BF02h
  3171. --------E-15BF02DX0000-----------------------
  3172. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  3173.     AX = BF02h
  3174.     DX = 0000h
  3175. Return: DX = nonzero if installed
  3176.         DX:SI -> XBRK structure (see #0410)
  3177. Note:    this function is also supported by DOS/4G
  3178. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  3179. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  3180.  
  3181. Format of DOS/16M XBRK structure:
  3182. Offset    Size    Description    (Table 0410)
  3183.  00h    DWORD    linear address of first available byte
  3184.  04h    DWORD    linear address of last available byte + 1 ???
  3185.  08h    DWORD    real-mode address of XBRK structure???
  3186.  0Ch    DWORD    ???
  3187.  10h  2 BYTEs    ???
  3188.  12h    WORD    segment of ???
  3189.  14h  8 BYTEs    ???
  3190.  1Ch 512 BYTEs    protected-mode IDT
  3191. 21Ch  N BYTEs    protected-mode GDT
  3192. --------E-15BF03-----------------------------
  3193. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  3194.     AX = BF03h
  3195.     BX = PSP segment of extender
  3196.     ???
  3197. Return: ???
  3198. Note:    if BX is not the PSP segment of the extender, it passes the call down
  3199.       the INT 15 chain; this allows nested instances of the extender
  3200. SeeAlso: AX=BF06h
  3201. --------E-15BF04-----------------------------
  3202. INT 15 - Rational Systems DOS/4GW - ???
  3203.     AX = BF04h
  3204.     BX = PSP segment of extender
  3205. Return: nothing???
  3206. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  3207.       the INT 15 chain; this allows nested instances of the extender
  3208.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  3209. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  3210. --------E-15BF05-----------------------------
  3211. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  3212.     AX = BF05h
  3213.     BX = PSP segment of extender
  3214. Return: nothing???
  3215. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  3216.       the INT 15 chain; this allows nested instances of the extender
  3217.     calls INT 67/AX=DE01h if ???
  3218. --------E-15BF06-----------------------------
  3219. INT 15 - Rational Systems DOS/4GW - ???
  3220.     AX = BF06h
  3221.     BX = PSP segment of extender
  3222.     ???
  3223. Return: ???
  3224. Note:    if BX is not the PSP segment of the extender, it passes the call down
  3225.       the INT 15 chain; this allows nested instances of the extender
  3226. SeeAlso: AX=BF03h
  3227. --------E-15BFDCDX0000-----------------------
  3228. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  3229.     AX = BFDCh
  3230.     DX = 0000h
  3231.     SI = 0000h
  3232. Return: DX = nonzero if installed
  3233.         DX:SI -> XBRK structure (see #0410)
  3234. SeeAlso: AX=BF02h
  3235. --------E-15BFDEBX0000-----------------------
  3236. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  3237.     AX = BFDEh
  3238.     BX = 0000h
  3239. Return: AX = ??? (0003h)
  3240.     BX = FFFFh
  3241. SeeAlso: AX=BF02h
  3242. --------E-15BFDEBX0001-----------------------
  3243. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  3244.     AX = BFDEh
  3245.     BX = 0001h
  3246. Return: BX = 0000h (success)
  3247.     CX:DX -> name of process manager executable
  3248. SeeAlso: AX=BFDEh/BX=0000h
  3249. --------E-15BFDEBX0002-----------------------
  3250. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  3251.     AX = BFDEh
  3252.     BX = 0002h
  3253.     CX:DX -> ???
  3254. Return: BX = 0000h (success)
  3255. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  3256. --------E-15BFDEBX0003-----------------------
  3257. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3258.     AX = BFDEh
  3259.     BX = 0003h
  3260. Return: BX = 0000h (success)
  3261.     CX:DX -> ???
  3262. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  3263. --------E-15BFDEBX0004-----------------------
  3264. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3265.     AX = BFDEh
  3266.     BX = 0004h
  3267.     CL = ???
  3268. Return: BX = 0000h (success)
  3269.     CX:DX -> XBRK structure (see #0410)
  3270. SeeAlso: AX=BFDEh/BX=0000h
  3271. --------E-15BFDEBX0005-----------------------
  3272. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3273.     AX = BFDEh
  3274.     BX = 0005h
  3275.     CX = new value for ???
  3276. Return: BX = 0000h (success)
  3277.     AX = old value of ???
  3278.     DS:SI -> ??? (if AX nonzero on return)
  3279.     ES:DI -> ??? (if AX zero on return)
  3280. Note:    called by DOS4GW.EXE
  3281. SeeAlso: AX=BFDEh/BX=0000h
  3282. --------E-15BFDEBX0006-----------------------
  3283. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3284.     AX = BFDEh
  3285.     BX = 0006h
  3286. Return: BX = 0000h (success)
  3287.     AH = interrupt number??? (BEh)
  3288.     CX:DX = ???
  3289. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  3290. --------E-15BFDEBX0007-----------------------
  3291. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  3292.     AX = BFDEh
  3293.     BX = 0007h
  3294.     CX:DX = ???
  3295. Return: BX = 0000h (success)
  3296. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  3297. --------E-15BFDEBX0008-----------------------
  3298. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3299.     AX = BFDEh
  3300.     BX = 0008h
  3301.     CX = segment of ???
  3302.     DS = ???
  3303. Return: BX = status
  3304.         0000h successful
  3305.         AL = ??? (80h or C0h)
  3306.         DX = ??? (0603h) if AL=C0h
  3307.         0001h failed
  3308.         AX = 0000h
  3309. Note:    called by DOS4GW.EXE
  3310. SeeAlso: AX=BFDEh/BX=0000h
  3311. --------E-15BFDEBX0009-----------------------
  3312. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  3313.     AX = BFDEh
  3314.     BX = 0009h
  3315. Return: BX = 0000h (success)
  3316.     CX:DX -> full pathname to LOAD32.EXP
  3317. SeeAlso: AX=BFDEh/BX=0000h
  3318. --------E-15BFDEBX000A-----------------------
  3319. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  3320.     AX = BFDEh
  3321.     BX = 000Ah
  3322. Return: BX = 0000h (success)
  3323.     AX = new value of ??? counter
  3324. Notes:    also resets a variety of values if the counter goes negative
  3325.     called by DOS4GW.EXE
  3326. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  3327. --------E-15BFDEBX000B-----------------------
  3328. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  3329.     AX = BFDEh
  3330.     BX = 000Bh
  3331. Return: AX = new value of ??? counter
  3332. Note:    called by DOS4GW.EXE
  3333. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  3334. --------E-15BFDEBX000C-----------------------
  3335. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3336.     AX = BFDEh
  3337.     BX = 000Ch
  3338.     CL = ???
  3339.         00h
  3340.         nonzero
  3341. Return: ???
  3342. SeeAlso: AX=BFDEh/BX=0000h
  3343. --------E-15BFDEBX000D-----------------------
  3344. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3345.     AX = BFDEh
  3346.     BX = 000Dh
  3347.     ???
  3348. Return: ???
  3349. SeeAlso: AX=BFDEh/BX=0000h
  3350. --------E-15BFDEBX000E-----------------------
  3351. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3352.     AX = BFDEh
  3353.     BX = 000Eh
  3354.     DX:CX -> ???
  3355. Return: AX = segment of handle for calling task
  3356.     BX = ??? (probably destroyed)
  3357.     DX:CX -> ???
  3358. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  3359. --------E-15BFDEBX000F-----------------------
  3360. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  3361.     AX = BFDEh
  3362.     BX = 000Fh
  3363. Return: AX = segment of handle for calling task
  3364.     BX = ??? (probably destroyed)
  3365.     DX:CX -> ???
  3366. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  3367. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  3368. --------E-15BFDEBX0010-----------------------
  3369. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  3370.     AX = BFDEh
  3371.     BX = 0010h
  3372. Return: AX = segment of caller's task handle
  3373.     BX destroyed
  3374. SeeAlso: AX=BFDEh/BX=000Fh
  3375. --------E-15BFDEBX0011-----------------------
  3376. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3377.     AX = BFDEh
  3378.     BX = 0011h
  3379. Return: CX = code segment of DVDOS4GX.DVR
  3380.     BX = ??? (0004h)
  3381. SeeAlso: AX=BFDEh/BX=0000h
  3382. --------E-15BFDEBX0012-----------------------
  3383. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3384.     AX = BFDEh
  3385.     BX = 0012h
  3386. Return: DX = code segment of DVDOS4GX.DVR
  3387.     BX = ??? (012Ch)
  3388.     CX = ??? (0006h)
  3389. SeeAlso: AX=BFDEh/BX=0000h
  3390. --------E-15BFDEBX0013-----------------------
  3391. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3392.     AX = BFDEh
  3393.     BX = 0013h
  3394. Return: DX:CX -> ???
  3395. SeeAlso: AX=BFDEh/BX=000Eh
  3396. --------E-15BFDEBX0014-----------------------
  3397. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  3398.     AX = BFDEh
  3399.     BX = 0014h
  3400.     CX = index of ??? mailbox
  3401.         (0000h-0004h valid, but no range checking done)
  3402. Return: AX,BX destroyed
  3403. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  3404. --------E-15BFDEBX0015-----------------------
  3405. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  3406.     AX = BFDEh
  3407.     BX = 0015h
  3408.     CX = index of ??? mailbox
  3409.         (0000h-0004h valid, but no range checking done)
  3410. Return: AX,BX destroyed
  3411. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  3412. --------E-15BFDEBX0016-----------------------
  3413. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  3414.     AX = BFDEh
  3415.     BX = 0016h
  3416.     CX = index of ??? mailbox
  3417.         (0000h-0004h valid, but no range checking done)
  3418. Return: AX = status
  3419.         0000h no one owns mailbox
  3420.         0001h mailbox has an owner
  3421.     BX destroyed
  3422. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  3423. --------E-15BFDEBX0017-----------------------
  3424. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  3425.     AX = BFDEh
  3426.     BX = 0017h
  3427.     CX = index of ??? mailbox
  3428.         (0000h-0004h valid, but no range checking done)
  3429. Return: AX = segment of mailbox owner's handle
  3430.     BX = segment of caller's task handle
  3431. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  3432. --------E-15BFDEBXFFFD-----------------------
  3433. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  3434.     AX = BFDEh
  3435.     BX = FFFDh
  3436. Return: CX:DX = ???
  3437. SeeAlso: AX=BFDEh/BX=FFFEh
  3438. --------E-15BFDEBXFFFE-----------------------
  3439. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  3440.     AX = BFDEh
  3441.     BX = FFFEh
  3442.     CX:DX = ???
  3443. SeeAlso: AX=BFDEh/BX=FFFDh
  3444. --------E-15BFDEBXFFFF-----------------------
  3445. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  3446.     AX = BFDEh
  3447.     BX = FFFFh
  3448. SeeAlso: AX=BFDEh/BX=0000h
  3449. --------B-15C0-------------------------------
  3450. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  3451.     AH = C0h
  3452. Return: CF set if BIOS doesn't support call
  3453.     CF clear on success
  3454.         ES:BX -> ROM table (see #0411)
  3455.     AH = status
  3456.         00h successful
  3457.         86h unsupported function
  3458. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  3459.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  3460.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  3461.       and a model byte at absolute address FE845h (see #0417)
  3462.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  3463.       a product identifier at F000h:00FAh (see #0420)
  3464.     Compaq machines can be identified by the signature string "COMPAQ" at
  3465.       F000h:FFEAh, and is preceded by additional information (see #0418)
  3466.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  3467.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  3468.       first three data bytes (model/submodel/revision) in the returned
  3469.       table
  3470.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  3471.       a laptop information record at F000h:E000h (see #0421)
  3472.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  3473.       past the end of the configuration table
  3474.     the Phoenix 386 BIOS contains a second version and date string
  3475.       (presumably the last modification for that OEM version) beginning at
  3476.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  3477.       the complete information)
  3478. SeeAlso: AH=C7h,AH=C9h,AX=D100h,AX=D103h
  3479.  
  3480. Format of ROM configuration table:
  3481. Offset    Size    Description    (Table 0411)
  3482.  00h    WORD    number of bytes following
  3483.  02h    BYTE    model (see #0416)
  3484.  03h    BYTE    submodel (see #0416)
  3485.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  3486.  05h    BYTE    feature byte 1 (see #0412)
  3487.  06h    BYTE    feature byte 2 (see #0413)
  3488.  07h    BYTE    feature byte 3 (see #0414)
  3489.  08h    BYTE    feature byte 4 (see #0415)
  3490.  09h    BYTE    feature byte 5:
  3491.         reserved (0) (IBM)
  3492.         ??? (08h) (Phoenix 386 v1.10)
  3493.         ??? (0Fh) (Phoenix 486 v1.03 PCI)
  3494. ---AWARD BIOS---
  3495.  0Ah  N BYTEs    AWARD copyright notice
  3496. ---Phoenix BIOS---
  3497.  0Ah    BYTE    ??? (00h)
  3498.  0Bh    BYTE    major version
  3499.  0Ch    BYTE    minor version (BCD)
  3500.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  3501. ---Quadram Quad386---
  3502.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  3503.  
  3504. Bitfields for feature byte 1:
  3505. Bit(s)    Description    (Table 0412)
  3506.  7    DMA channel 3 used by hard disk BIOS
  3507.  6    2nd 8259 installed
  3508.  5    Real-Time Clock installed
  3509.  4    INT 15/AH=4Fh called upon INT 09h
  3510.  3    wait for external event (INT 15/AH=41h) supported
  3511.  2    extended BIOS area allocated (usually at top of RAM)
  3512.  1    bus is Micro Channel instead of ISA
  3513.  0    system has dual bus (Micro Channel + ISA)
  3514. SeeAlso: #0411,#0413
  3515.  
  3516. Bitfields for feature byte 2:
  3517. Bit(s)    Description    (Table 0413)
  3518.  7    reserved
  3519.  6    INT 16/AH=09h (keyboard functionality) supported (see #0484)
  3520.  5    INT 15/AH=C6h (get POS data) supported
  3521.  4    INT 15/AH=C7h (return memory map info) supported
  3522.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  3523.  2    non-8042 keyboard controller
  3524.  1    data streaming supported
  3525.  0    reserved
  3526. SeeAlso: #0411,#0414,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h
  3527.  
  3528. Bitfields for feature byte 3:
  3529. Bit(s)    Description    (Table 0414)
  3530.  7-5    reserved
  3531.  4    ??? (set on 1992 PS/1's, N51SX, CL57SX, 35SX?, 40SX?)
  3532.  3    SCSI subsystem supported on system board
  3533.  2    information panel installed
  3534.  1    IML (Initial Machine Load) system
  3535.  0    SCSI supported in IML
  3536. SeeAlso: #0411,#0413,#0414
  3537.  
  3538. Bitfields for feature byte 4:
  3539. Bit(s)    Description    (Table 0415)
  3540.  7    ??? (set on N51SX, CL57SX)
  3541.  6-4    reserved
  3542.  3    ??? (set on some 1992 PS/1's, 35SX, 40SX)
  3543.  2-1    reserved
  3544.  0    ??? (set on N51SX, CL57SX, 57SX)
  3545. SeeAlso: #0411,#0414
  3546.  
  3547. (Table 0416)
  3548. Values for model/submodel/revision:
  3549. Model  Submdl  Rev    BIOS date    System
  3550.  FFh    *    *    04/24/81    PC (original)
  3551.  FFh    *    *    10/19/81    PC (some bugfixes)
  3552.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  3553.  FFh    00h    rev      ???        Tandy 1000SL
  3554.  FFh    01h    rev      ???        Tandy 1000TL
  3555.  FFh    46h    ***      ???        Olivetti M15
  3556.  FEh    *    *    08/16/82    PC XT
  3557.  FEh    *    *    11/08/82    PC XT and Portable
  3558.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  3559.                     ("x"=product ID) (see #0422)
  3560.  FEh    43h    ***      ???        Olivetti M240
  3561.  FEh    A6h    ???      ???        Quadram Quad386
  3562.  FDh    *    *    06/01/83    PCjr
  3563.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  3564.  FCh    *    *    02/25/93    Linux DOSEMU (all versions)
  3565.  FCh    00h    00h      ???        PC3270/AT
  3566.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  3567.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  3568.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  3569.  FCh    01h    00h    09/17/87    Tandy 3000
  3570.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  3571.                     ("x"=product ID) (see #0422)
  3572.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  3573.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  3574.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  3575.  FCh    01h    00h    04/09/90    AMI BIOS
  3576.  FCh    01h    20h    06/10/92    AST
  3577.  FCh    01h    30h      ???        Tandy 3000NL
  3578.  FCh    01h    ???      ???        Compaq 286/386
  3579.  FCh    02h    00h    04/21/86    PC XT-286
  3580.  FCh    02h    00h     various    Compaq LTE Lite
  3581.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  3582.  FCh    02h    00h    08/11/88    SoftWindows 1.0.1 (Power Macintosh)
  3583.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  3584.  FCh    04h    01h    05/09/87    PS/2 Model 50 (10 Mhz 286, LW-type 32)
  3585.  FCh    04h    02h      ???        PS/2 Model 50
  3586.  FCh    04h    02h    01/28/88    PS/2 Model 50Z (10 Mhz 286, LW-type 33)
  3587.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  3588.  FCh    04h    04h      ???        PS/2 Model 50Z
  3589.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  3590.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  3591.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  3592.  FCh    08h    ***      ???        Epson, unknown model
  3593.  FCh    08h    00h      ???        PS/2 Model 25/286
  3594.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  3595.  FCh    09h    00h    08/25/88    PS/2 Model 30 286 (10 Mhz, LW-type 37)
  3596.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  3597.  FCh    09h    02h    06/28/89    PS/2 Model 25 286 (10 Mhz, LW-type 37)
  3598.  FCh    0Bh    00h    12/01/89    PS/1 (LW-Type 44)
  3599.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  3600.  FCh    20h    00h    02/18/93    Compaq ProLinea
  3601.  FCh    30h    ***      ???        Epson, unknown model
  3602.  FCh    31h    ***      ???        Epson, unknown model
  3603.  FCh    33h    ***      ???        Epson, unknown model
  3604.  FCh    42h    ***      ???        Olivetti M280
  3605.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  3606.  FCh    48h    ***      ???        Olivetti M290
  3607.  FCh    4Fh    ***      ???        Olivetti M250
  3608.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  3609.  FCh    51h    ***      ???        Olivetti PCS286
  3610.  FCh    52h    ***      ???        Olivetti M300
  3611.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  3612.  FCh    81h    01h      ???        "OEM machine"
  3613.  FCh    82h    01h      ???        "OEM machine"
  3614.  FCh    94h    00h      ???        Zenith 386
  3615.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  3616.  FBh    00h    01h    05/13/94    HP 200LX 2MB BIOS 1.01 A D german
  3617.  FBh    00h    02h    05/09/86    PC XT
  3618.  FBh    00h    04h    08/19/93    HP 100LX 1MB BIOS 1.04 A
  3619.  FBh    4Ch    ***      ???        Olivetti M200
  3620.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  3621.  FAh    00h    01h    12/12/86    PS/2 Model 30
  3622.  FAh    00h    02h    02/05/87    PS/2 Model 30
  3623.  FAh    01h    00h    06/26/87    PS/2 Model 25/25L (8 MHz 8086)
  3624.  FAh    30h    00h      ???        IBM Restaurant Terminal
  3625.  FAh    4Eh    ***      ???        Olivetti M111
  3626.  FAh    FEh    00h      ???        IBM PCradio 9075
  3627.  F9h    00h    00h    09/13/85    PC Convertible
  3628.  F9h    FFh    00h      ???        PC Convertible
  3629.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  3630.  F8h    00h    00h      ???        PS/2 Model 75 486 (33Mhz 486)
  3631.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  3632.  F8h    02h    00h      ???        PS/2 Model 55-5571
  3633.  F8h    04h    00h    01/29/88    PS/2 Model 70 (20 Mhz 386DX,LW-type 33)
  3634.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  3635.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  3636.  F8h    05h    00h      ???        IBM PC 7568
  3637.  F8h    06h    00h      ???        PS/2 Model 55-5571
  3638.  F8h    07h    00h      ???        IBM PC 7561/2
  3639.  F8h    07h    01h      ???        PS/2 Model 55-5551
  3640.  F8h    07h    02h      ???        IBM PC 7561/2
  3641.  F8h    07h    03h      ???        PS/2 Model 55-5551
  3642.  F8h    09h    00h    01/29/88    PS/2 Model 70 16MHz 386DX, type 1 sysbd
  3643.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  3644.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  3645.  F8h    09h    04h    12/15/89    PS/2 Model 70 (16 Mhz 386, LW-type 33)
  3646.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  3647.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  3648.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  3649.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  3650.  F8h    0Dh    00h    06/08/88    PS/2 Model 70 386 25MHz, type 3 sys brd
  3651.  F8h    0Dh    01h    02/20/89    PS/2 Model 70 386 25MHz, type 3 sys brd
  3652.  F8h    0Dh    ???    12/01/89    PS/2 Model 70 486 25Mhz, type 3 sys brd
  3653.  F8h    0Eh    00h      ???        PS/1 486SX
  3654.  F8h    0Fh    00h      ???        PS/1 486DX
  3655.  F8h    10h    00h      ???        PS/2 Model 55-5551
  3656.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  3657.  F8h    12h    00h      ???        PS/2 Model 95 XP
  3658.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  3659.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  3660.  F8h    15h    00h      ???        PS/2 Model 90 XP
  3661.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD / 95XP486 (33MHz 486)
  3662.  F8h    17h    00h      ???        PS/2 Model 90 XP
  3663.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  3664.  F8h    19h    05h    03/15/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  3665.  F8h    19h    06h    04/04/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  3666.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  3667.  F8h    1Bh    00h    09/29/89    PS/2 Model 70 486 (25 Mhz 386DX)
  3668.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  3669.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 / 65 SX (16MHz 386SX)
  3670.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  3671.  F8h    23h    00h      ???        PS/2 Model L40 SX
  3672.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  3673.  F8h    23h    02h    02/27/91    PS/2 Model L40 SX (20Mhz386SX,LW-typ37)
  3674.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  3675.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  3676.  F8h    26h    00h      ???        PS/2 Model 57 SX
  3677.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  3678.  F8h    26h    02h    07/03/91    PS/2 Model 57 SX (20Mhz 386SX, SCSI)
  3679.  F8h    28h    00h      ???        PS/2 Model 95 XP
  3680.  F8h    29h    00h      ???        PS/2 Model 90 XP
  3681.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  3682.  F8h    2Bh    00h      ???        PS/2 Model 90 / 90XP486 (50 MHz 486)
  3683.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  3684.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  3685.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  3686.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  3687.  F8h    2Eh    00h      ???        PS/2 Model 95 XP486 (20 Mhz 486SX)
  3688.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  3689.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  3690.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  3691.  F8h    33h    00h      ???        PS/2 Model 30-386
  3692.  F8h    34h    00h      ???        PS/2 Model 25-386
  3693.  F8h    36h    00h      ???        PS/2 Model 95 XP
  3694.  F8h    37h    00h      ???        PS/2 Model 90 XP
  3695.  F8h    38h    00h      ???        PS/2 Model 57
  3696.  F8h    39h    00h      ???        PS/2 Model 95 XP
  3697.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  3698.  F8h    40h    00h      ???        PS/2 Model 95 XP
  3699.  F8h    41h    00h      ???        PS/2 Model 77
  3700.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  3701.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  3702.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  3703.  F8h    48h    00h      ???        PS/2 Model 85
  3704.  F8h    49h    00h      ???        PS/ValuePoint 325T
  3705.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  3706.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  3707.  F8h    4Eh    00h      ???        PS/2 Model 295
  3708.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  3709.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  3710.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  3711.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  3712.  F8h    57h    00h      ???        PS/2 Model 90 XP
  3713.  F8h    58h    00h      ???        PS/2 Model 95 XP
  3714.  F8h    59h    00h      ???        PS/2 Model 90 XP
  3715.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  3716.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  3717.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  3718.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  3719.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  3720.  F8h    61h    ***      ???        Olivetti P500
  3721.  F8h    62h    ***      ???        Olivetti P800
  3722.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  3723.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21 (25 Mhz 386)
  3724.  F8h    81h    00h      ???        PS/2 Model 55-5502
  3725.  F8h    87h    00h      ???        PS/2 Model N33SX
  3726.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  3727.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  3728.  F8h    99h    00h      ???        PS/2 Model N51 SX
  3729.  F8h    F2h    30h      ???        Reply Model 32
  3730.  F8h    F6h    30h      ???        Memorex Telex
  3731.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  3732.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  3733.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  3734.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  3735.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  3736.  E4h    ???    ???      ???        Triumph Adler PC/XT
  3737.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  3738.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  3739.  D9h    ???    ???      ???        Peacock XT
  3740.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  3741.  30h    ???    ???      ???        Sperry PC
  3742.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  3743.  ???    56h    ???      ???        Olivetti, unknown model
  3744.  ???    74h    ???      ???        Olivetti, unknown model
  3745. Notes:    BIOS dates may vary without changes to the revision code, especially
  3746.       for non-IBM machines
  3747.     * This BIOS call is not implemented in these early versions or under
  3748.       Linux's DOSEMU.  Read the Model byte at F000h:FFFEh and BIOS date at
  3749.       F000h:FFF5h instead.
  3750.    ** These BIOS versions require the DASDDRVR.SYS patches.
  3751.   *** These Olivetti and Epson machines store the submodel in the byte at
  3752.     F000h:FFFDh.
  3753. SeeAlso: #0411,#0417
  3754.  
  3755. (Table 0417)
  3756. Values for Dell model byte:
  3757.  02h    Dell 200
  3758.  03h    Dell 300
  3759.  05h    Dell 220
  3760.  06h    Dell 310
  3761.  07h    Dell 325
  3762.  09h    Dell 310A
  3763.  0Ah    Dell 316
  3764.  0Bh    Dell 220E
  3765.  0Ch    Dell 210
  3766.  0Dh    Dell 316SX
  3767.  0Eh    Dell 316LT
  3768.  0Fh    Dell 320LX
  3769.  11h    Dell 425E
  3770. SeeAlso: #0411,#0416
  3771.  
  3772. Format of Compaq product information:
  3773. Address        Size    Description    (Table 0418)
  3774.  F000h:FFE4h    BYTE    product family code (first byte)
  3775.  F000h:FFE4h    BYTE    Point release number
  3776.  F000h:FFE4h    BYTE    ROM version code
  3777.  F000h:FFE4h    BYTE    product family code (second byte)
  3778.  F000h:FFE8h    WORD    BIOS type code
  3779. SeeAlso: #0419,#0421
  3780.  
  3781. Format of Hewlett-Packard ROM ID at F000h:00F8h:
  3782. Offset    Size    Description    (Table 0419)
  3783.  00h  2 BYTEs    signature "HP" (48h 50h)
  3784.  02h  2 BYTEs    00h 00h
  3785.  04h    BYTE    secondary code revision
  3786.  05h    BYTE    primary code revision
  3787.  06h    BYTE    date code, year-1960 (BCD)
  3788.  07h    BYTE    date code, week of year (BCD)
  3789. SeeAlso: #0418,#0420
  3790.  
  3791. Bitfields for Hewlett-Packard product identifier:
  3792. Bit(s)    Description    (Table 0420)
  3793.  4-0    machine code
  3794.     0 original Vectra
  3795.     1 ES/12
  3796.     2 RS/20
  3797.     3 Portable/CS
  3798.     4 ES
  3799.     5 CS
  3800.     6 RS/16
  3801.     other reserved
  3802.  7-5    CPU type
  3803.     0 = 80286
  3804.     1 = 8088
  3805.     2 = 8086
  3806.     3 = 80386
  3807.     other reserved
  3808. SeeAlso: #0419
  3809.  
  3810. Format of Toshiba laptop information:
  3811. Offset    Size    Description    (Table 0421)
  3812.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  3813.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  3814.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  3815.  18h  8 BYTEs    always zero???
  3816.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  3817. Note:    this record is located at F000h:E000h
  3818. SeeAlso: #0418,#0419
  3819.  
  3820. (Table 0422)
  3821. Values for Toshiba product ID:
  3822. model prodID   version      date       product number
  3823.  FEh    29h        ../..)..   Toshiba T1000LE
  3824.  FEh    2Ah        ../..*..   Toshiba T1000XE
  3825.  FEh    2Bh        ../..+..   Toshiba T1000SE
  3826.  FEh    2Ch        ../..,..   Toshiba T1000
  3827.  FEh    2Dh        ../..-..   Toshiba T1200F
  3828.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H
  3829.  FEh    2Eh        ../.....   Toshiba T1100+
  3830.  FCh    22h        ../.."..   Toshiba T8500
  3831.  FCh    26h        01/15&88   Toshiba T5200
  3832.  FCh    27h        ../..'..   Toshiba T5100
  3833.  FCh    28h        ../..(..   Toshiba T2000
  3834.  FCh    2Ah        12/26*89   Toshiba T1200XE
  3835.  FCh    2Bh        ../..+..   Toshiba T1600
  3836.  FCh    2Ch        ../..,..   Toshiba T3100e
  3837.  FCh    2Dh        ../..-..   Toshiba T3200
  3838.  FCh    2Fh        ../../..   Toshiba T3100
  3839.  FCh    34h    V1.50    02/04494   Toshiba T100X
  3840.  FCh    38h        ../..8..   Toshiba T2000SXe
  3841.  FCh    39h    V1.20    09/16991   Toshiba T2200SX
  3842.  FCh    39h    V1.40    10/01992   Toshiba T2200SX
  3843.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX
  3844.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  3845.  FCh    3Eh        ../..>..   Toshiba T3100SX
  3846.  FCh    3Fh        ../..?..   Toshiba T3200SX
  3847.  FCh    40h        ../..@..   Toshiba T4500C
  3848.  FCh    41h    V1.20    04/05A92   Toshiba T4500     ("T4500SXC" ???)
  3849.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  3850.  FCh    45h        01/13E93   Toshiba T4400SXC
  3851.  FCh    46h *        ../..F..   Toshiba T6400
  3852.  FCh    46h *        ../..F..   Toshiba T6400C
  3853.  FCh    5Fh    V1.40    01/18_94   Toshiba T3300SL
  3854.  FCh    69h        ../..i..   Toshiba T1900C    ("T1900CT" ???)
  3855.  FCh    6Ah    V1.30    05/19j93   Toshiba T1900     ("T1900S" ???)
  3856.  FCh    6Dh    V1.10    12/25m92   Toshiba T1850C
  3857.  FCh    6Eh    V1.00    08/19n92   Toshiba T1850
  3858.  FCh    6Eh    V1.10    12/25n92   Toshiba T1850
  3859.  FCh    6Fh    V1.00    07/17o92   Toshiba T1800
  3860.  FCh    6Fh    V1.10    12/25o92   Toshiba T1800
  3861.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  3862.  FCh    7Fh    V1.40    11/10x94   Toshiba T4600
  3863.  FCh    8Ah    V1.30    10/22x93   Toshiba T6600C
  3864.  FCh    91h    V1.20    07/15x94   Toshiba T2400CT
  3865.  FCh    91h    V5.00    07/28x95   Toshiba T2400CS/CT
  3866.  FCh    92h    V5.00    07/28x95   Toshiba T3600CT
  3867.  FCh    96h *    V1.40    12/08x94   Toshiba T200
  3868.  FCh    96h *    V1.50    12/08x94   Toshiba T200CS    (T200)
  3869.  FCh    97h        ../..x..   Toshiba T4800CT
  3870.  FCh    98h *    V1.10    12/22x93   Toshiba T1910
  3871.  FCh    98h *    V2.40    07/12x94   Toshiba T1910/CS    (T19XX)
  3872.  FCh    99h        ../..x..   Toshiba T4700CS
  3873.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  3874.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT
  3875.  FCh    9Bh    V5.00    07/28x95   Toshiba T4700CT
  3876.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT
  3877.  FCh    9Ch    V2.50    07/22x94   Toshiba T1950CT    (T19XX)
  3878.  FCh    9Dh *    V2.40    07/12x94   Toshiba T1950/CS    (T19XX)
  3879.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400
  3880.  FCh    9Eh *    V1.30    03/22x94   Toshiba T3400/CT
  3881.  FCh    B5h **    V5.10    08/25x95   Toshiba T2110/CS    (T21XX)
  3882.  FCh    B5h    V5.10    08/25x95   Toshiba T2130CS/CT    (T21XX)
  3883.  FCh    BAh    V1.30    02/16x95   Toshiba T2150CDS/CDT
  3884.  FCh    BAh    V5.00    07/27x95   Toshiba T2150CDS/CDT (T2150)
  3885.  FCh    BBh **    V1.30    01/25x95   Toshiba T2100/CS/CT
  3886.  FCh    BBh **    V5.00    07/27x95   Toshiba T2100/CS/CT
  3887.  FCh    BCh    V1.20    12/05x94   Toshiba T2450CT
  3888.  FCh    BCh    V5.00    07/28x95   Toshiba T2450CT
  3889.  FCh    BEh    V5.00    07/28x95   Toshiba T4850CT
  3890.  FCh    C0h    V5.20    05/30x96   Toshiba 420CDS/CDT
  3891.  FCh    C1h    V5.20    03/27x96   Toshiba 100CS
  3892.  FCh    C3h    V5.60    07/19x96   Toshiba 710CDT / 720CDT
  3893.  FCh    C6h    V5.30    11/30x95   Toshiba 410CS/CDT
  3894.  FCh    CAh    V5.10    08/18x95   Toshiba 400CS/CDT
  3895.  FCh    CAh    V5.40    12/18x95   Toshiba 400CS/CDT
  3896.  FCh    CBh    V5.10    09/01x95   Toshiba 610CT
  3897.  FCh    CCh    V5.50    06/13x96   Toshiba 700CS/CT
  3898.  FCh    CFh    V5.00    08/07x95   Toshiba T4900CT
  3899.  FCh    DCh    V5.10    06/17x96   Toshiba 650CT
  3900.  FCh    DCh    V5.10    05/10x96   Toshiba 110CS/CT
  3901.  FCh    DFh    V5.20    05/27x96   Toshiba 500CS/CDT
  3902.  FCh    ???        ../.. ..   Toshiba 100CS
  3903.  FCh    ???    V5.???    ../..x..   Toshiba 620CT
  3904.  FCh    ???        ../.. ..   Toshiba 700CS/CT
  3905.  FCh    ???        ../.. ..   Toshiba 710CDT
  3906.  FCh    ???        ../.. ..   Toshiba 720CDT
  3907.  FCh    ???    V5.???    ../..x..   Toshiba 730CDT
  3908. Note:    the 8-bit ASCII graphics character in the "date" column above
  3909.       has been substituted by "x" if larger than 80h
  3910.     BIOS version numbers and dates may vary, esp. due to harddisk and
  3911.       (flash) BIOS upgrades; all BIOS versions 5.xx are flash updates
  3912.       for Windows 95, the product number may indicate the series only
  3913.       (T21XX) or does no longer contain the exact type suffix (CS/CT)
  3914.     [*] These models have monochrome and color versions which can be
  3915.       distinguished with INT 42/AX=7503h (WD90C24 chipset)
  3916.     [**] These models have monochrome and color versions which can be
  3917.       distinguished with INT 10/AX=5F50h (CT655xx chipset)
  3918.     models not found here like T21x5 are variants with other software
  3919.       bundlings only
  3920. SeeAlso: #0416
  3921. --------B-15C1-------------------------------
  3922. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  3923.     AH = C1h
  3924. Return: CF set on error
  3925.     CF clear if successful
  3926.         ES = segment of data area
  3927. SeeAlso: AH=04h"ABIOS"
  3928. --------M-15C200-----------------------------
  3929. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  3930.     AX = C200h
  3931.     BH = new state
  3932.         00h disabled
  3933.         01h enabled
  3934. Return: CF set on error
  3935.     AH = status (see #0423)
  3936.  
  3937. (Table 0423)
  3938. Values for pointing device function status:
  3939.  00h    successful
  3940.  01h    invalid function
  3941.  02h    invalid input
  3942.  03h    interface error
  3943.  04h    need to resend
  3944.  05h    no device handler installed
  3945. --------M-15C201-----------------------------
  3946. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  3947.     AX = C201h
  3948. Return: CF set on error
  3949.         AH = status (see #0423)
  3950.     CF clear if successful
  3951.         BH = device ID
  3952.         BL = value returned by attached device after reset
  3953.         AAh if device is a mouse
  3954. Note:    after successful completion of this call, the pointing device is set
  3955.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  3956.       scaling 1:1, unchanged data package size
  3957. SeeAlso: INT 33/AX=0000h
  3958. --------M-15C202-----------------------------
  3959. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  3960.     AX = C202h
  3961.     BH = sampling rate
  3962.         00h 10/second
  3963.         01h 20/second
  3964.         02h 40/second
  3965.         03h 60/second
  3966.         04h 80/second
  3967.         05h 100/second
  3968.         06h 200/second
  3969. Return: CF set on error
  3970.         AH = status (see #0423)
  3971. SeeAlso: INT 33/AX=001Ch
  3972. --------M-15C203-----------------------------
  3973. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  3974.     AX = C203h
  3975.     BH = resolution (see #0424)
  3976. Return: CF set on error
  3977.         AH = status (see #0423)
  3978.  
  3979. (Table 0424)
  3980. Values for pointing device resolution:
  3981.  00h    one count per mm
  3982.  01h    two counts per mm
  3983.  02h    four counts per mm
  3984.  03h    eight counts per mm
  3985. --------M-15C204-----------------------------
  3986. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  3987.     AX = C204h
  3988. Return: CF set on error
  3989.         AH = status (see #0423)
  3990.     CF clear if successful
  3991.         BH = device ID
  3992. --------M-15C205-----------------------------
  3993. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  3994.     AX = C205h
  3995.     BH = data package size (1 - 8 bytes)
  3996. Return: CF set on error
  3997.         AH = status (see #0423)
  3998. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  3999.       resolution 4 counts/mm, scaling 1:1
  4000. SeeAlso: AX=C201h
  4001. --------M-15C206-----------------------------
  4002. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  4003.     AX = C206h
  4004.     BH = subfunction
  4005.         00h return device status
  4006.         Return: BL = pointing device status (see #0425)
  4007.             CL = resolution (see #0424)
  4008.             DL = sample rate, reports per second
  4009.         01h set scaling at 1:1
  4010.         02h set scaling at 2:1
  4011. Return: CF set on error
  4012.         AH = status (see #0423)
  4013.  
  4014. Bitfields for pointing device status:
  4015. Bit(s)    Description    (Table 0425)
  4016.  0    right button pressed
  4017.  1    reserved
  4018.  2    left button pressed
  4019.  3    reserved
  4020.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  4021.  5    device enabled
  4022.  6    0 if stream mode, 1 if remote mode
  4023.  7    reserved
  4024. --------M-15C207-----------------------------
  4025. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  4026.     AX = C207h
  4027.     ES:BX -> FAR user device handler or 0000h:0000h to cancel
  4028. Return: CF set on error
  4029.         AH = status (see #0423)
  4030. Note:    when the subroutine is called, it is passed the following values on
  4031.       the stack; the handler should return with a FAR return without
  4032.       popping the stack:
  4033.         WORD 1: status (see #0426)
  4034.         WORD 2: X data (high byte = 00h)
  4035.         WORD 3: Y data (high byte = 00h)
  4036.         WORD 4: 0000h
  4037. SeeAlso: INT 33/AX=000Ch
  4038.  
  4039. Bitfields for pointing device status:
  4040. Bit(s)    Description    (Table 0426)
  4041.  15-8    reserved (0)
  4042.  7    Y data overflowed
  4043.  6    X data overflowed
  4044.  5    Y data is negative
  4045.  4    X data is negative
  4046.  3    reserved (1)
  4047.  2    reserved (0)
  4048.  1    right button pressed
  4049.  0    left button pressed
  4050. --------B-15C3------------------------------
  4051. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  4052.     AH = C3h
  4053.     AL = function
  4054.         00h disable PS/2 watchdog timer
  4055.         01h enable PS/2 watchdog timer
  4056.         BX = timer counter (0001h-00FFh)
  4057.         02h disable Gearbox system
  4058.         03h enable Gearbox system
  4059. Return: CF set on error
  4060.     CF clear if successful
  4061. Note:    the watchdog timer generates an NMI
  4062. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  4063. --------B-15C4-------------------------------
  4064. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  4065.     AH = C4h
  4066.     AL = subfunction
  4067.         00h return base POS register address
  4068.         01h enable selected slot for setup
  4069.         BL = slot number (1 to 8)
  4070.         02h disable setup for all slots (enable adapter)
  4071. Return: CF set on error
  4072.     DX = base POS register address (if subfunction 00h)
  4073. SeeAlso: AH=C6h
  4074. --------B-15C5-------------------------------
  4075. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  4076.     AH = C5h
  4077.     AL = interrupt being invoked
  4078.         01h INT 19
  4079.         02h INT 14
  4080.         03h INT 16
  4081.         04h INT 40 (floppy INT 13)
  4082.         05h INT 17
  4083.         06h INT 10
  4084.         07h INT 12
  4085.         08h INT 11
  4086.         09h INT 1A
  4087. Return: all registers except AX must be preserved
  4088. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  4089.       handlers on the PS/2 Models 30/286, 50Z, and 95
  4090.     default handler does nothing and returns CF clear for the above
  4091.       subfunctions, CF set and AH=86h for all other subfunctions
  4092.     value of AX passed to the original interrupt handler is pushed on
  4093.       stack immediately prior to call
  4094. --------B-15C6-------------------------------
  4095. INT 15 U - later PS/2 models - GET POS DATA
  4096.     AH = C6h
  4097.     ???
  4098. Return: ???
  4099. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  4100.     IBM reports that "there are a number of problems with this call" and
  4101.       does not recommend its use.
  4102. SeeAlso: AH=C4h
  4103. --------B-15C7-------------------------------
  4104. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  4105.     AH = C7h
  4106.     DS:SI -> user supplied memory map table (see #0427)
  4107. Note:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  4108.       function is supported
  4109. Return: CF set on error, clear if successful
  4110. SeeAlso: AH=C0h,AH=C9h,AH=D1h
  4111.  
  4112. Format of memory-map table structure:
  4113. Offset    Size    Description    (Table 0427)
  4114.  00h    WORD    length of table (excluding this word)
  4115.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  4116.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  4117.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  4118.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  4119.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  4120.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  4121.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  4122.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  4123.  22h  2 DWORDs    reserved
  4124. --------B-15C8-------------------------------
  4125. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  4126.     AH = C8h
  4127.     AL = function
  4128.         00h disable cache or (90 and 95) disable cache L1
  4129.         01h enable cache or (90 and 95) enable cache L1
  4130.         ---models 90 and 95 only---
  4131.         02h disable cache L2
  4132.         03h enable cache L2
  4133.         04h disable both caches
  4134.         05h enable both caches
  4135.         06h return status of both caches
  4136.         07h-FFh Reserved
  4137. Return: CF set on error
  4138.     CF clear if successful
  4139.         AH = status (see #0428)
  4140.     For subfunction 06h only:
  4141.         BH = status of cache L2
  4142.         00h enabled
  4143.         01h disabled or not installed
  4144.         BL = status of cache L1 (same codes as BH)
  4145. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  4146.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  4147.       function is supported.
  4148.     on a 486 system, any external caches must be disabled when the
  4149.       on-chip cache (L1) is disabled.
  4150. SeeAlso: AH=C0h
  4151.  
  4152. (Table 0428)
  4153. Values for status:
  4154.  00h    operation successful
  4155.  01h    function choice (in AL) is invalid
  4156.  02h    NVRAM data is invalid
  4157.  03h    cache test error
  4158.  04h    (90 and 95 only) cannot perform operation requested due to state of
  4159.       other cache (also see note above)
  4160.  05h    no L2 cache is present
  4161.  09h    CPU in protected mode
  4162. --------B-15C9-------------------------------
  4163. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  4164.     AH = C9h
  4165.     AL = 10h (may be required on some non-PS BIOSes)
  4166. Return: CF clear if successful
  4167.         AH = 00h
  4168.         CH = CPU type (see #0429)
  4169.         CL = mask revision (stepping level) (see #0430)
  4170.     CF set on error
  4171.         AH = status (80h,86h = function not supported)
  4172. Notes:    the BIOS must save DX at startup in order to be able to support this
  4173.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  4174.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  4175. SeeAlso: AX=DA92h
  4176.  
  4177. (Table 0429)
  4178. Values for CPU type:
  4179.  03h    80386DX or clone
  4180.  04h    80486
  4181.  05h    Pentium
  4182.  23h    80386SX or clone
  4183.  33h    Intel i376
  4184.  43h    80386SL or clone
  4185.  A3h    IBM 386SLC
  4186.  A4h    IBM 486SLC
  4187.  
  4188. (Table 0430)
  4189. Values for stepping level:
  4190. ---i376 (type code 33h)---
  4191.  05h    A0
  4192.  08h    B
  4193. ---80386/80386DX (type code 03h)---
  4194.  03h    Intel B1 to B10, Am386DX/DXL step A
  4195.  05h    Intel D0
  4196.  08h    Intel D1/D2/E1, Am386DX/DXL step B
  4197. ---80386SL (type code 43h)---
  4198.  05h    A
  4199.  1xh    B
  4200. ---80386SX (type code 23h)---
  4201.  04h    Intel A0
  4202.  05h    Intel B, Am386SX/SXL step A1
  4203.  08h    Intel C/D1, Am386SX/SXL step B
  4204.  09h    Intel 386CX/386EX/386SXstatic step A
  4205. ---80486DX (type code 04h)---
  4206.  00h    Intel A0/A1
  4207.  01h    Intel B2 to B6
  4208.  02h    Intel C0
  4209.  03h    Intel C1
  4210.  04h    Intel D0
  4211.  10h    Intel cA2/cA3, Cx486SLC step A
  4212.  11h    Intel cB0/cB1
  4213. ---486DX2 (type code 04h)---
  4214.  02h    Am486DX2 (unknown stepping)
  4215.  32h    Intel DX2/Overdrive steps A0 to A2
  4216.  33h    Intel DX2/Overdrive step B1
  4217. ---486SX (type code 04h)---
  4218.  20h    Intel A0
  4219.  22h    Intel B0
  4220.  27h    Intel cA0
  4221.  28h    Intel cB0
  4222. ---486SL (type code 04h)---
  4223.  40h    Intel A
  4224. ---IntelSX2 (type code 04h)---
  4225.  5xh    Intel A
  4226. ---IntelDX4 (type code 04h)---
  4227.  8xh    Intel A
  4228. ---487SX (type code 04h)---
  4229.  20h    Intel A0
  4230.  21h    Intel B0
  4231. ---Pentium (type code 05h)---
  4232.  0xh    Intel P5 steps Ax (1993)
  4233.  1xh    Intel P5 steps Bx (1994)
  4234.  2xh    Intel P54C step A
  4235. ---RapidCAD (type code 03h)---
  4236.  40h    A
  4237. --------B-15CA-------------------------------
  4238. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  4239.     AH = CAh
  4240.     AL = function
  4241.         00h read CMOS
  4242.         Return: CL = value of CMOS location
  4243.         01h write CMOS
  4244.         CL = new value for CMOS location
  4245.     BL = CMOS location (0Eh-3Fh)
  4246. Return: CF clear if successful
  4247.         AH = 00h
  4248.     CF set on error
  4249.         AH = error code (see #0431)
  4250. Note:    writes do not update the CMOS checksum
  4251.  
  4252. (Table 0431)
  4253. Values for CMOS read/write error code:
  4254.  01h    CMOS lost power or has invalid checksum
  4255.  03h    specified location out of range (too high)
  4256.  04h    specified location out of range (too low)
  4257.  80h    unsupported function (PC)
  4258.  86h    unsupported function (XT)
  4259. --------B-15CB-------------------------------
  4260. INT 15 U - PS/2 Model 95 - RESERVED
  4261.     AH = CBh
  4262.     ???
  4263. Return: ???
  4264. --------B-15CC-------------------------------
  4265. INT 15 U - PS/2 Model 95 - RESERVED
  4266.     AH = CCh
  4267.     ???
  4268. Return: ???
  4269. --------V-15CCCC-----------------------------
  4270. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  4271.     AX = CCCCh
  4272. Return: AX = ABCDh if installed
  4273. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  4274.       older versions have the string "VCHAD" 2 bytes after the address of
  4275.       the INT 15 handler which is hooked by all versions for the SysReq key
  4276. SeeAlso: AH=85h
  4277. --------B-15CD-------------------------------
  4278. INT 15 U - PS/2 Model 95 - RESERVED
  4279.     AH = CDh
  4280.     ???
  4281. Return: ???
  4282. --------B-15CE--BL00-------------------------
  4283. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  4284.     AH = CEh
  4285.     BL = 00h-0Eh arbitration level to be allocated
  4286.          0Fh-FFh reserved
  4287.     AL = option byte
  4288.         bit 7-1: reserved (0)
  4289.         bit 0: 0 = need DMA channel for arbitration level requested
  4290.            1 = no channel required for arbitration level
  4291. Return: CF set on error
  4292.         AH = status (80h,86h = function not supported)
  4293.     CF clear on success
  4294.         AL = channel number
  4295.         00h-07h channel number allocated for the arbiration level
  4296.         08h-FEh reserved
  4297.         FFh    no channel requested for arbitration level
  4298.         AH = status (see #0432)
  4299. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  4300.      to perform a DMA transfer operation, be sure to call this function
  4301.        first, and call AH=CFh afterward.  Failure to use this function
  4302.        can cause unpredictable results.
  4303. SeeAlso: AH=CFh
  4304.  
  4305. (Table 0432)
  4306. Values for DMA arbitration status:
  4307.  00h    success
  4308.  01h    arbitration level not available
  4309.  02h    channel not available
  4310.  03h    invalid arbitration level passed
  4311. --------B-15CF-------------------------------
  4312. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  4313.     AH = CFh
  4314.     BL = arbitration level to be deallocated (see AH=CEh)
  4315. Return: CF set on error
  4316.         AH = status (80h,86h = function not supported)
  4317.     CF clear on success
  4318.         AH = status
  4319.         00h success
  4320.         04h arbitration level not allocated
  4321. SeeAlso: AH=CEh
  4322. --------B-15D0-------------------------------
  4323. INT 15 - later PS/2s - RESERVED
  4324.     AH = D0h
  4325.     ???
  4326. Return: ???
  4327. ----------15D042BL00-------------------------
  4328. INT 15 R - Intel Pentium Pro BIOS UPDATE - INSTALLATION CHECK
  4329.     AX = D042h
  4330.     BL = 00h
  4331. Return: CF clear if successful
  4332.     CF set on error
  4333.     AH = status
  4334.         00h successful
  4335.         EBX:ECX = signature "INTELPEP"
  4336.         EDX = BIOS update loader version
  4337.         SI = number of 2K update blocks which can be recorded in NVRAM
  4338.         86h not implemented
  4339.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  4340.         00h successful
  4341. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  4342.       to install a microcode patch into the Pentium Pro processor
  4343. Notes:    this API must be called from actual real mode, not V86 mode
  4344.     at least 32K stack space must be available when this function is called
  4345. SeeAlso: AX=D042h/BL=01h,AX=D042h/BL=02h,AX=D042h/BL=03h
  4346. SeeAlso: @xxxxh:xxxxh"Intel BIOS Upgrade",MSR 00000079h
  4347. ----------15D042BL01-------------------------
  4348. INT 15 R - Intel Pentium Pro BIOS UPDATE - WRITE BIOS UPDATE AREA
  4349.     AX = D042h
  4350.     BL = 01h
  4351.     ES:DI -> microcode update block (see #0434)
  4352.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  4353. Return: CF clear if successful
  4354.     CF set on error
  4355.     AH = status (see #0433)
  4356.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  4357.         00h successful
  4358. Notes:    a microcode update may also be initiated by a WRMSR instruction
  4359.       with ECX=0079h, EDX=00000000h, and EAX=linear address of update
  4360.       block (see #0434)
  4361.     at least 32K stack space must be available when this function is called
  4362. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h
  4363.  
  4364. (Table 0433)
  4365. Values for Pentium Pro BIOS update status:
  4366.  00h    successful
  4367.  86h    not implemented
  4368.  90h    unable to erase NVRAM device
  4369.  91h    unable to write to NVRAM device
  4370.  92h    unable to read storage
  4371.  93h    NVRAM is full
  4372.  94h    specified processor stepping is not present in system
  4373.  95h    invalid header or loader version
  4374.  96h    wrong checksum in header
  4375.  97h    processor rejected the update
  4376.  98h    the same or a more recent update is already stored
  4377.  99h    update block number was out of range
  4378.  
  4379. Format of Pentium Pro microcode update block:
  4380. Offset    Size    Description    (Table 0434)
  4381.  00h    DWORD    update header version number (currently 00000001h)
  4382.         FFFFFFFFh = unused block
  4383.  04h    DWORD    revision number of this microcode update
  4384.  08h    DWORD    update creation date, as BCD mmddyyyy (month,day,year)
  4385.  0Ch    DWORD    family/model/stepping of processor to which update applied
  4386.         (same value as returned by CPUID instruction)
  4387.  10h    DWORD    checksum (used to force sum of all 512 DWORDs of the update
  4388.         block to 00000000h)
  4389.  14h    DWORD    revision number of loader needed to install update
  4390.         (currently 00000001h)
  4391.  18h 24 BYTEs    reserved for future expansion
  4392.  30h 2000 BYTEs    encrypted microcode data
  4393. ----------15D042BL02-------------------------
  4394. INT 15 R - Intel Pentium Pro BIOS UPDATE - BIOS UPDATE CONTROL
  4395.     AX = D042h
  4396.     BL = 02h
  4397.     BH = function
  4398.         01h enable update loading at initialization time
  4399.         02h check whether update loading is enabled
  4400.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  4401. Return: CF clear if successful
  4402.     CF set on error
  4403.     AH = status (see #0433)
  4404.         00h successful
  4405.         BL = enabled/disabled flag
  4406.         86h not implemented
  4407.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  4408.         00h successful
  4409. Notes:    this API must be called from actual real mode, not V86 mode
  4410.     at least 32K stack space must be available when this function is called
  4411.     there is no call to disable update loading due to security risks; the
  4412.       BIOS setup can disable loading
  4413. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h
  4414. ----------15D042BL03-------------------------
  4415. INT 15 R - Intel Pentium Pro BIOS UPDATE - READ BIOS UPDATE AREA
  4416.     AX = D042h
  4417.     BL = 03h
  4418.     ES:DI -> buffer for microcode update block (see #0434)
  4419.     ECX = two real-mode 64K scratchpad segments (upper and lower words)
  4420.     DX = segment of 64K scratchpad area for BIOS use
  4421.     SI = zero-based index number of update block to retrieve
  4422. Return: CF clear if successful
  4423.     CF set on error
  4424.     AH = status
  4425.         00h successful
  4426.         ES:DI buffer filled with 2048-byte update block
  4427.         86h not implemented
  4428.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  4429.         00h successful
  4430. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  4431.       to install a microcode patch into the Pentium Pro processor
  4432. Notes:    this API must be called from actual real mode, not V86 mode
  4433.     at least 32K stack space must be available when this function is called
  4434. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=01h,AX=D042h/BL=03h
  4435. --------B-15D100DX0000-----------------------
  4436. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  4437.     AX = D100h
  4438.     DX = 0000h (reserved, must set to 0)
  4439. Return: BL = size of one DDT entry, in bytes
  4440.     CX = number of DDT entries
  4441.     AH = return code (see #0435)
  4442.     CF set on error
  4443.     CF clear on success
  4444. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  4445.  
  4446. (Table 0435)
  4447. Values for return code:
  4448.  00h    success
  4449.  01h    requested DDT entry not found
  4450.  02h    DDT data not valid
  4451.  86h    function not supported
  4452. --------B-15D101-----------------------------
  4453. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  4454.     AX = D101h
  4455.     BX = number of requested entry (starting with 1)
  4456.     DX = 0000h (reserved, must be set to 0)
  4457.     ES:DI -> buffer to contain DDT entry (see #0436)
  4458. Return: AH = return code (see #0435)
  4459.     CF set on error
  4460.     CF clear on success
  4461.         ES:DI buffer filled with DDT entry
  4462. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  4463.  
  4464. Format of Device Descriptor Table (DDT):
  4465. Offset    Size    Description    (Table 0436)
  4466.  00h    BYTE    bits 7-4: reserved (set to 0)
  4467.         bits 3-0: slot of device (0 = system board)
  4468.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  4469.         bits 3-0: first interrupt for this device (0 = none)
  4470.  02h    BYTE    bits 7-4: second arbitration level for this device
  4471.         bits 3-0: first arbitration level for this device
  4472.  03h    WORD    DDT indicators (see #0437)
  4473.  05h    BYTE    reserved (0)
  4474.  06h    WORD    device ID (0 = none)
  4475.  08h    WORD    starting address of first  I/O block (0 = none)
  4476.  0Ah    WORD    starting address of second I/O block (0 = none)
  4477.  OCh    WORD    starting address of third  I/O block (0 = none)
  4478.  OEh    DWORD    start of first non-system memory block (0 = none)
  4479.  12h    WORD    size of first non-system memory block (in kilobytes)
  4480.  14h    DWORD    start of second non-system memory block (0 = none)
  4481.  18h    WORD    size of second non-system memory block (in kilobytes)
  4482.  1Ah    BYTE    implementation identifier of the device
  4483.  1Bh    BYTE    implementation revision level of the device
  4484. Note:    I/O block addresses and non-system memory addresses are listed in
  4485.       ascending order in each DDT entry.
  4486.  
  4487. Bitfields for DDT indicators:
  4488. Bit(s)    Description    (Table 0437)
  4489.  15    reserved (0)
  4490.  14    second arbitration level exists
  4491.  13    first arbitration level exists
  4492.  12    serial interface is RS-422
  4493.  11    not address limited
  4494.  10    DMA channel used
  4495.  9    second arbitration level can be shared
  4496.  8    first arbitration level can be shared
  4497.  7-0    reserved (0)
  4498. --------B-15D102-----------------------------
  4499. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  4500.     AX = D102h
  4501.     BX = entry number at which to start searching
  4502.     CX = requested I/O port address
  4503.     DX = 0000h (reserved, must be set to 0)
  4504.     ES:DI -> buffer to contain DDT entry (see #0436)
  4505. Return: AH = return code (see #0435)
  4506.     BX = DDT entry number where I/O port was found, or total entries
  4507.          plus 1 if port was not found.
  4508.     CF set on error
  4509.     CF clear on success
  4510.         ES:DI buffer filled with DDT entry
  4511. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  4512.       and the first entry in which it is found is returned
  4513. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  4514. --------B-15D103DX0000-----------------------
  4515. INT 15 - later PS/2s - RETURN ENTIRE DDT
  4516.     AX = D103h
  4517.     DX = 0000h (reserved, must be set to 0)
  4518.     ES:DI -> buffer to contain DDT entry (see #0436)
  4519. Return: AH = return code (see #0435)
  4520.     CF set on error
  4521.     CF clear on success
  4522.         ES:DI buffer filled with DDT entry
  4523. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  4524. --------B-15D104-----------------------------
  4525. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  4526.     AX = D104h
  4527.     BX = entry number at which to start searching
  4528.     CX = requested device ID
  4529.     DX = 0000h (reserved, must be set to 0)
  4530.     ES:DI -> buffer to contain DDT entry (see #0436)
  4531. Return: AH = return code (see #0435)
  4532.     BX = DDT entry number where device ID was found, or total entries
  4533.           plus 1 if port was not found.
  4534.     CF set on error
  4535.     CF clear on success
  4536.         ES:DI buffer filled with DDT entry
  4537. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  4538.       and the first entry in which it is found is returned.
  4539. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  4540. --------B-15D2-------------------------------
  4541. INT 15 - later PS/2s - RESERVED
  4542.     AH = D2h
  4543.     ???
  4544. Return: ???
  4545. --------B-15D3-------------------------------
  4546. INT 15 - later PS/2s - RESERVED
  4547.     AH = D3h
  4548.     ???
  4549. Return: ???
  4550. --------B-15D4-------------------------------
  4551. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  4552.     AH = D4h
  4553.     DL = logical fixed disk drive number
  4554. Return: AH = return code (see #0438)
  4555.     CF set on error
  4556.     CF clear on success
  4557.         AL = physical fixed disk drive number
  4558.  
  4559. (Table 0438)
  4560. Values for return code:
  4561.  00h    success
  4562.  01h    specified logical drive number is invalid
  4563.  80h    function not supported (on PCjr and PC)
  4564.  86h    function not supported
  4565. --------B-15D5-------------------------------
  4566. INT 15 - later PS/2s - RESERVED
  4567.     AH = D5h
  4568.     ???
  4569. Return: ???
  4570. --------B-15D600BL00-------------------------
  4571. INT 15 - later PS/2s - READ BOOT DEVICE ID
  4572.     AX = D600h
  4573.     BL = 00h
  4574.     DX = device ID
  4575. Return: CF clear if successful
  4576.         AH = 00h
  4577.     CF set on error
  4578.         AH = status (86h for function not supported)
  4579. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  4580. --------B-15D600BL01-------------------------
  4581. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  4582.     AX = D600h
  4583.     BL = 01h
  4584.     DX = device ID
  4585. Return: CF clear on success
  4586.         AH = 00h
  4587.     CF set on error
  4588.         AH = status (86h for function not supported)
  4589. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  4590. --------B-15D601BL00-------------------------
  4591. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  4592.     AX = D601h
  4593.     BL = 00h
  4594.     DX = device ID
  4595. Return: CF clear on success
  4596.         AH = 00h
  4597.     CF set on error
  4598.         AH = status (86h for function not supported)
  4599. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  4600. --------B-15D601BL01-------------------------
  4601. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  4602.     AX = D601h
  4603.     BL = 01h
  4604.     DX = device ID
  4605. Return: CF clear on success
  4606.         AH = 00h
  4607.     CF set on error
  4608.         AH = status (86h for function not supported)
  4609. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  4610. --------B-15D602-----------------------------
  4611. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  4612.     AX = D602h
  4613. Return: CF clear on success
  4614.         AH = 00h
  4615.         AL = status of reference-partition boot request
  4616.         00h boot not requested
  4617.         01h boot requested
  4618.     CF set on error
  4619.         AH = status (86h for function not supported)
  4620. SeeAlso: AX=D601h/BL=00h
  4621. --------X-15D800-----------------------------
  4622. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  4623.     AX = D800h
  4624.     CL = slot number (including embedded and virtual)
  4625. Return: CF clear if successful
  4626.         AH = 00h
  4627.     CF set on error
  4628.         AH = error code (80h,82h,83h,86h,87h)(see #0440)
  4629.     AL = bit flags (see #0439)
  4630.     BH = major revision level of configuration utility
  4631.     BL = minor revision level of configuration utility
  4632.     CX = checksum of configuration file
  4633.     DH = number of device functions
  4634.     DL = combined function information byte
  4635.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  4636. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  4637. SeeAlso: AX=D801h,AX=D804h
  4638.  
  4639. Bitfields for EISA AL bit flags:
  4640. Bit(s)    Description    (Table 0439)
  4641.  7    set if duplicate IDs
  4642.  6    set if product ID readable
  4643.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  4644.  0-3    duplicate ID number if bit 7 set
  4645.  
  4646. (Table 0440)
  4647. Values for EISA error code:
  4648.  80h    invalid slot number
  4649.  81h    invalid function number
  4650.  82h    EISA CMOS corrupt
  4651.  83h    empty slot
  4652.  84h    error clearing CMOS
  4653.  85h    EISA CMOS is full
  4654.  86h    invalid BIOS-FW function call
  4655.  87h    invalid system configuration
  4656.  88h    config utility version not supported
  4657. --------X-15D801-----------------------------
  4658. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  4659.     AX = D801h
  4660.     CH = function number to read
  4661.     CL = slot number (including embedded and virtual)
  4662.     DS:SI -> 320-byte buffer for standard configuration data block
  4663. Return: CF clear if successful
  4664.         AH = 00h
  4665.         DS:SI buffer filled
  4666.     CF set on error
  4667.         AH = error code (80h-83h,86h,87h) (see #0440)
  4668.     BX destroyed
  4669. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  4670. --------X-15D802-----------------------------
  4671. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  4672.     AX = D802h
  4673.     BH = EISA config utility major revision level
  4674.     BL = EISA config utility minor revision level
  4675. Return: CF clear if successful
  4676.         AH = 00h
  4677.     CF set on error
  4678.         AH = error code (84h,86h,88h) (see #0440)
  4679. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  4680. SeeAlso: AX=D803h
  4681. --------X-15D803-----------------------------
  4682. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  4683.     AX = D803h
  4684.     CX = length of data structure (0000h = empty slot)
  4685.         includes two bytes for config file checksum
  4686.     DS:SI -> configuration data
  4687. Return: CF clear if successful
  4688.         AH = 00h
  4689.     CF set on error
  4690.         AH = error code (84h-86h) (see #0440)
  4691. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  4692. SeeAlso: AX=D802h
  4693. --------X-15D804-----------------------------
  4694. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  4695.     AX = D804h
  4696.     CL = slot number (including embedded and virtual)
  4697. Return: CF clear if successful
  4698.         AH = 00h
  4699.     CF set on error
  4700.         AH = error code (80h,83h,86h) (see #0440)
  4701.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  4702. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  4703. SeeAlso: AX=D800h
  4704. --------b-15D820-----------------------------
  4705. INT 15 - Compaq LTE Lite - GET ???
  4706.     AX = D820h
  4707.     DS:SI -> 17-byte buffer for ???
  4708. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  4709.       it is greater than 10h, in which case the second byte is 00h and no
  4710.       other data is returned)
  4711. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  4712.       486/486c/486cx and recent DESKPRO/i ROMs
  4713. SeeAlso: AX=D821h
  4714. --------b-15D821-----------------------------
  4715. INT 15 - Compaq LTE Lite - SET ???
  4716.     AX = D821h
  4717.     DS:SI -> counted string (should not be more than 16 bytes)
  4718. Return: AH = 00h
  4719. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  4720.       486/486c/486cx and recent DESKPRO/i ROMs
  4721. SeeAlso: AX=D820h
  4722. --------b-15D822BL00-------------------------
  4723. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  4724.     AX = D822h
  4725.     BL = 00h
  4726.     CX = size of buffer or 0000h to retrieve required buffer size
  4727.     DS:SI -> buffer for ??? (if CX nonzero)
  4728. Return: CF clear if successful
  4729.         AH = 00h
  4730.         DH = 08h
  4731.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  4732.         DS:SI buffer filled (if CX nonzero on entry)
  4733.     CF set on error (BL nonzero)
  4734.         AH = 86h
  4735. --------b-15D823-----------------------------
  4736. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  4737.     AX = D823h
  4738.     BL = subfunction??? (00h or 80h)
  4739.     BH = ???
  4740.     DS:SI -> buffer for ??? (see #0441)
  4741. Return: CF clear if successful
  4742.         AH = 00h
  4743.         DH = 08h
  4744.         DL = ???
  4745.     CF set on error
  4746.         AH = error code
  4747.         86h BL neither 00h nor 80h
  4748.         87h ???
  4749.  
  4750. Format of Compaq EISA buffer:
  4751. Offset    Size    Description    (Table 0441)
  4752.  00h    BYTE    ???
  4753.  01h    WORD    ???
  4754.  03h    BYTE    ???
  4755.  04h    WORD    ???
  4756.  06h    WORD    ???
  4757.     ???
  4758. ----------15D824-----------------------------
  4759. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  4760.     AX = D824h
  4761.     CX = ???
  4762.     DS:SI -> ASCIZ string containing ???
  4763. Return: CF clear if successful
  4764.         AH = 00h
  4765.         CX = ???
  4766.     CF set on error
  4767.         AH = error code
  4768.         87h ??? failed
  4769.         88h ???
  4770. Note:    these functions are only available if ??? from keyboard controller
  4771.       command C0h
  4772. ----------15D825-----------------------------
  4773. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  4774.     AX = D825h
  4775.     CX = ???
  4776.     SI = ???
  4777.     DI = ???
  4778.     ???
  4779. Return: CF clear if successful
  4780.         AH = 00h
  4781.         CX = ???
  4782.     CF set on error
  4783.         AH = error code
  4784.         87h ??? failed
  4785.         88h ???
  4786.             CX = ???
  4787. Note:    these functions are only available if ??? from keyboard controller
  4788.       command C0h
  4789. ----------15D826-----------------------------
  4790. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  4791.     AX = D826h
  4792.     BX = ???
  4793.     CX = size of buffer in bytes
  4794.     DS:SI -> buffer for ???
  4795.     ???
  4796. Return: CF clear if successful
  4797.         AH = 00h
  4798.         CX = ???
  4799.     CF set on error
  4800.         AH = error code
  4801.         87h ??? failed
  4802.         88h ???
  4803. Note:    these functions are only available if ??? from keyboard controller
  4804.       command C0h
  4805. --------X-15D8-------------------------------
  4806. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  4807.     AH = D8h
  4808.     AL = 80h to 84h
  4809.     other registers as appropriate for AL=00h to 04h
  4810. Return: as appropriate for AL=00h to 04h
  4811. Note:    these functions are identical to AX=D800h to D804h, except that they
  4812.       should be called when using 32-bit CS addressing mode (pointers use
  4813.       ESI rather than SI as offset) instead of 16-bit addressing mode
  4814. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  4815. --------b-15D8-------------------------------
  4816. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  4817.     AH = D8h
  4818.     AL = A0h to A6h
  4819.     other registers as appropriate for AL=20h to 26h
  4820. Return: as appropriate for AL=20h to 26h
  4821. Note:    these functions are identical to AX=D820h to D826h, except that they
  4822.       should be called when using 32-bit CS addressing mode
  4823. ----------15DA-------------------------------
  4824. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  4825.     AH = DAh
  4826.     AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
  4827.     other registers vary by function
  4828. Return: CF clear if successful
  4829.         varies by function
  4830.     CF set on error
  4831.         AH = error code (86h unsupported [sub]function)
  4832. Note:    functions not listed above always return CF set and AH=86h; in the
  4833.       examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also
  4834.       always return CF set and AH=86h
  4835. SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h
  4836. --------b-15DA00-----------------------------
  4837. INT 15 U - AMI PCI BIOS - ???
  4838.     AX = DA00h
  4839.     CL = subfunction
  4840.         00h ???
  4841.         01h ???
  4842.         02h get ???
  4843.     ???
  4844. Return: CF clear if successful
  4845.         ???
  4846.     CF set on error
  4847.         AH = error code (86h unsupported subfunction)
  4848. Note:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return
  4849.       failure
  4850. SeeAlso: AX=DA01h
  4851. --------b-15DA01-----------------------------
  4852. INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL
  4853.     AX = DA01h
  4854.     CL = subfunction (00h-02h)
  4855.         00h set low CPU speed
  4856.         01h set high CPU speed
  4857.         02h get current CPU speed
  4858. Return: CF clear if successful
  4859.         AH = current/new CPU speed (00h low, 01h high)
  4860.         AL = ??? (00h)
  4861.     CF set on error
  4862.         AH = error code (86h unsupported subfunction)
  4863. Notes:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both
  4864.       protected and V86 modes due to a test of MSW bit 0
  4865.     setting the CPU speed also generates the same audible signals generated
  4866.       when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+
  4867. BUG:    the BIOS apparently intends to return CF set if ???, but fails to use
  4868.       a different exit path in that case, resulting in CF clear
  4869. ----------15DA05-----------------------------
  4870. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  4871.     AX = DA05h
  4872.     ES:SI -> 8-byte buffer for ??? and BIOS revision strings
  4873. Return: CF clear
  4874.     ES:SI buffer filled
  4875.     AL = 00h
  4876.     CX = ??? (0000h)
  4877. Notes:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  4878.       string is "AX1 "
  4879. SeeAlso: AX=DA15h,AX=DB04h
  4880. ----------15DA08-----------------------------
  4881. INT 15 U - AMI PCI BIOS - ???
  4882.     AX = DA08h
  4883.     ???
  4884. Return: CF clear if successful
  4885.         ???
  4886.     CF set on error
  4887.         AH = error code (86h unsupported subfunction)
  4888. Note:    in the examined v1.00.05.AX1 BIOS, this call always returns failure
  4889. ----------15DA12-----------------------------
  4890. INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ???
  4891.     AX = DA12h
  4892.     CL = subfunction
  4893.         00h ???
  4894.         01h    ???
  4895.         02h get ???
  4896.         03h ???
  4897.         04h ???
  4898.     ???
  4899. Return: CF clear if successful
  4900.         ???
  4901.     CF set on error
  4902.         AH = error code (86h unsupported subfunction)
  4903. Desc:    ??? performs various manipulations on system chipset registers
  4904. Notes:    subfunctions 00h and 01h are NOPs in protected and V86 modes due to
  4905.       a test of MSW bit 0
  4906.     subfunctions 00h-02h always return success
  4907. ----------15DA14-----------------------------
  4908. INT 15 U - AMI PCI BIOS - GET/SET ???
  4909.     AX = DA14h
  4910.     CL = subfunction
  4911.         00h read
  4912.         01h write
  4913.         DH = new value for ??? (00h-02h)
  4914.     DL = index of ??? (00h-03h, but not range-checked)
  4915.     ???
  4916. Return: CF clear if successful
  4917.         DH = current value of ??? if reading
  4918.     CF set on error
  4919.         AH = error code (86h unsupported subfunction)
  4920. Note:    the values for indexes 00h and 01h are stored in CMOS RAM location 19h,
  4921.       and the values for 02h and 03h are stored in location 36h
  4922. BUG:    the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of
  4923.       subfunction 01h, even though DH is never used by subfunction 00h
  4924. ----------15DA15-----------------------------
  4925. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  4926.     AX = DA15h
  4927.     ES:DI -> 8-byte buffer for ??? and BIOS revision strings
  4928. Return: CF clear
  4929.     ES:DI buffer filled
  4930.     AL = 00h
  4931. Note:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  4932.       string is "AX1 "
  4933. SeeAlso: AX=DA05h,AX=DB04h
  4934. ----------15DA19-----------------------------
  4935. INT 15 U - AMI PCI BIOS - GET/SET ???
  4936.     AX = DA19h
  4937.     CL = subfunction
  4938.         00h get first ???
  4939.         01h get second ???
  4940.         02h set first ???
  4941.         BX = ???
  4942.         DX = ???
  4943.         03h set second ???
  4944.         BX = ???
  4945.         DX = ???
  4946. Return: CF clear if successful
  4947.         AX = 0000h
  4948.         BX,DX = ??? (subfunctions 00h and 01h only)
  4949.     CF set on error
  4950.         AH = error code (86h unsupported subfunction)
  4951. Note:    the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in
  4952.       locations 1Fh-22h in the v1.00.05.AX1 BIOS
  4953. --------b-15DA20-----------------------------
  4954. INT 15 U - AMI PCI BIOS v1.00.12.AX1T - CMOS RAM BITFIELD MANIPULATION
  4955.     AX = DA20h
  4956.     BL = subfunction
  4957.         00h set CMOS data field
  4958.         BH = CMOS data field number (00h-4Dh)
  4959.         CH = new value for bitfield (in lowest bits of register)
  4960.         01h read CMOS data field
  4961.         BH = CMOS data field number (00h-4Dh)
  4962.         Return: CH = value of bitfield
  4963.             CL = mask of valid bits
  4964.         Note:    both CL/CH shifted to move valid bits into lowest pos
  4965.         02h set CMOS byte
  4966.         CL = CMOS RAM address (00h-7Fh)
  4967.         CH = new value for CMOS byte
  4968.         03h get CMOS byte
  4969.         CL = CMOS RAM address (00h-7Fh)
  4970.         Return: CH = value of CMOS byte
  4971.         04h update CMOS checksums
  4972.         Note:    sets 2Eh/2Fh to checksum of 10h-2Dh and 7Eh/7Fh to
  4973.               checksum of 48h-7Dh
  4974.         05h verify CMOS checksums
  4975.         Return:    CF clear if checksums OK
  4976.                 AH = 00h
  4977.             CF set if checksum mismatch
  4978.                 AH = 01h
  4979. Return: CF clear if successful
  4980.         AH = 00h
  4981.     CF set on error
  4982.         AH = error code (86h unsupported function/data field)
  4983. Notes:    this function was not supported by the v1.00.05.AX1 BIOS, but had been
  4984.       added by 1.00.12.AX1T
  4985.     after using subfunctions 00h or 02h, the application must call
  4986.       subfunction 04h to update the checksums to prevent an error the next
  4987.       time the system is booted
  4988.  
  4989. (Table 0442)
  4990. Values for AMI BIOS v1.00.12.AX1T CMOS bitfield identifier:
  4991.  ID    address    bit(s)    contents
  4992.  00h    1Ah    7-6
  4993.  01h    1Dh    7-6
  4994.  02h    6Eh    1
  4995.  03h    77h    0
  4996.  04h    77h    1
  4997.  05h    77h    2
  4998.  06h    77h    3
  4999.  07h    77h    5
  5000.  08h    77h    6
  5001.  09h    77h    7
  5002.  0Ah    78h    7    power management enabled???
  5003.  0Bh    78h    6
  5004.  0Ch    10h    7-4    first floppy drive type
  5005.  0Dh    10h    3-0    second floppy drive type
  5006.  0Eh    11h    7
  5007.  0Fh    20h    4-0    selected language for error messages/setup utility
  5008.  10h    11h    2-1
  5009.  11h    11h    4
  5010.  12h    11h    0
  5011.  13h    11h    3
  5012.  14h    13h    7
  5013.  15h    13h    6-5
  5014.  16h    13h    4-2
  5015.  17h    19h    7
  5016.  18h    19h    6
  5017.  19h    19h    5
  5018.  1Ah    19h    4
  5019.  1Bh    1Eh    2-0
  5020.  1Ch    1Bh    7-6
  5021.  1Dh    1Ch    7
  5022.  1Eh    1Ch    3
  5023.  1Fh    1Ah    5-4
  5024.  20h    1Dh    5-4
  5025.  21h    1Bh    5-4
  5026.  22h    1Ch    6
  5027.  23h    1Ch    2
  5028.  24h    1Ah    3-2
  5029.  25h    1Dh    3-2
  5030.  26h    1Bh    3-2
  5031.  27h    1Ch    5
  5032.  28h    1Ch    1
  5033.  29h    1Ah    1-0
  5034.  2Ah    1Dh    1-0
  5035.  2Bh    1Bh    1-0
  5036.  2Ch    1Ch    4
  5037.  2Dh    1Ch    0
  5038.  2Eh    50h    7-0
  5039.  2Fh    51h    7-0
  5040.  30h    52h    7-0
  5041.  31h    53h    7-0
  5042.  32h    60h    0
  5043.  33h    60h    0
  5044.  34h    60h    0
  5045.  35h    60h    0
  5046.  36h    60h    0
  5047.  37h    60h    0
  5048.  38h    60h    1
  5049.  39h    61h    7
  5050.  3Ah    60h    2
  5051.  3Bh    61h    6-4
  5052.  3Ch    61h    2-0
  5053.  3Dh    60h    7-6
  5054.  3Eh    60h    5-4
  5055.  3Fh    78h    5-4
  5056.  40h    6Eh    5
  5057.  41h    1Eh    3
  5058.  42h    6Eh    0
  5059.  43h    6Eh    2
  5060.  44h    6Fh    1-0
  5061.  45h    6Fh    1-0
  5062.  46h    28h    4-2
  5063.  47h    28h    7-5
  5064.  48h    6Eh    4
  5065.  49h    6Eh    3
  5066.  4Ah    76h    7-0
  5067.  4Bh    77h    4
  5068.  4Ch    11h    6
  5069.  4Dh    1Fh    7-0
  5070. ----------15DA88-----------------------------
  5071. INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE
  5072.     AX = DA88h
  5073. Return: CF clear (successful)
  5074.     AX = 0000h
  5075.     CL:BX = extended memory size in KBytes
  5076. SeeAlso: AH=88h
  5077. ----------15DA8C-----------------------------
  5078. INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET IDENTIFICATION
  5079.     AX = DA8Ch
  5080.     CL = subfunction
  5081.         00h get BIOS version string
  5082.         ES:DI -> 12-byte buffer for version string
  5083.         01h get chipset identification
  5084.         BL = what to retrieve
  5085.             (00h host/PCI bridge,01h motherboard chipset)
  5086.         ES:DI -> 12-byte buffer for chipset identification (see #0443)
  5087. Return: CF clear if successful
  5088.         ES:DI buffer filled
  5089.     CF set on error
  5090.         AH = error code (86h unsupported subfunction)
  5091. Notes:    the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string
  5092.     subfunction 01h returns the five bytes read from the PCI configuration
  5093.       registers 00h-05h (see #0628), padded to 12 bytes with NULs
  5094. SeeAlso: AX=DB04h,PORT C000h"Neptune"
  5095.  
  5096. Format of AMI PCI BIOS chipset identification:
  5097. Offset    Size    Description    (Table 0443)
  5098.  00h    WORD    vendor ID (see #0629)
  5099.         8086h = Intel
  5100.  02h    WORD    device ID
  5101.         0484h (BL=01h)
  5102.         04A3h (BL=00h)
  5103.  04h    BYTE    low byte of PCI Command Register
  5104.  05h  7 BYTEs    unused (00h)
  5105. ----------15DA8E-----------------------------
  5106. INT 15 U - AMI PCI BIOS - ???
  5107.     AX = DA8Eh
  5108.     ???
  5109. Return: CF clear if successful
  5110.         ???
  5111.     CF set on error
  5112.         AH = error code (86h unsupported subfunction)
  5113. Note:    in the    v1.00.05.AX1 BIOS, this call always returns failure
  5114. ----------15DA92-----------------------------
  5115. INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED
  5116.     AX = DA92h
  5117. Return: CF clear (successful)
  5118.     AL = CPU stepping (see also #0430 at INT 15/AH=C9h)
  5119.     AH = CPU model
  5120.     BL = CPU family (05h = Pentium, etc.)
  5121.     CX = external clock speed??? in BCD
  5122.         (0040h,0050h,0060h,0066h are possible return values on my
  5123.           Pentium with the Intel "Neptune" chipset)
  5124.     EAX high word destroyed
  5125. Note:    90 MHz and faster Pentium CPUs can be configured to run at 1.5 or
  5126.       2.0 times the external clock speed, i.e. a typical 90 MHz Pentium
  5127.       system will run the motherboard at 60 MHz (my 90 MHz Pentium returns
  5128.       0060h in CX)
  5129. SeeAlso: AH=C9h
  5130. ----------15DA99-----------------------------
  5131. INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG
  5132.     AX = DA99h
  5133.     CL = subfunction
  5134.         00h check if ???
  5135.         01h set ??? flag
  5136.         02h clear ??? flag
  5137. Return: CF clear if successful
  5138.         AH = ??? (00h,01h)
  5139.         AL = 00h
  5140.     CF set on error
  5141.         AH = error code (86h unsupported subfunction)
  5142. Note:    the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS
  5143.       v1.00.05.AX1
  5144. --------b-15DB00-----------------------------
  5145. INT 15 U - AMI BIOS - Flash ROM - READ FLASH BIOS
  5146.     AX = DB00h
  5147.     DS:SI -> parameter block (see #0444)
  5148.     ES:DI -> buffer for copied information
  5149. Return: CF clear if successful
  5150.     CF set on error
  5151.         AH = status (86h if not implemented)
  5152.     DS,ES destroyed, possibly other registers
  5153. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  5154. SeeAlso: AH=DAh,AX=DB01h,AX=DB04h
  5155.  
  5156. Format of AMI BIOS Flash ROM parameter block:
  5157. Offset    Size    Description    (Table 0444)
  5158.  00h 32 BYTEs    ASCIZ description of the file's contents
  5159.  20h    BYTE    Logical area type (see #0445)
  5160.  21h    DWORD    logical area size (overall size of area)
  5161.  25h    BYTE    flag: load from file (FF=yes, 00=no)
  5162.  26h    BYTE    flag: reboot after update (FF=yes, 00=no)
  5163.  27h    BYTE    flag: update entire image (FF=yes, 00=no)
  5164.  28h 24    BYTEs    ASCIZ logical area name (cooresponds to offset 20)
  5165.         "System BIOS"
  5166.         "Logo Data Area", etc.
  5167.  40h 15 BYTEs    ASCIZ time stamp string: MM/DD/YY-HH:MM
  5168.  4Fh    BYTE    checksum for this header (sum of all bytes except this one)
  5169.         if checksum would be 00h,01h, or FFh, it is set to 2Ah
  5170.  50h    DWORD    this file's starting address (offset in image)
  5171.  54h    DWORD    size of image chunk in this file
  5172.  58h    BYTE    logical area type - same as offset 20h
  5173.  59h    BYTE    flag: last file in chain (FF=yes, 00=no)
  5174.  5Ah  6 BYTEs    ASCIZ signature "FLASH"
  5175.  60h 16 BYTEs    ASCIZ filename of next file in chain
  5176.  70h 16 BYTEs    ASCIZ BIOS reserved string (usually version #)
  5177. Notes:    this block is identical in format to the 128-byte header on an AMI
  5178.       BIOS Update file
  5179.     for AX=DB00h, the following fields must be specified: 50h,54h,58h;
  5180.       the fields at offset 20h and 5Ah should also be set if possible
  5181.     the fields at offsets 40h and 70h will be set on return, if available
  5182. SeeAlso: #0446
  5183. --------b-15DB01-----------------------------
  5184. INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION
  5185.     AX = DB01h
  5186.     CL = BIOS subsystem information identifier (see #0445)
  5187. Return: CF clear if successful
  5188.         AX = 0000h
  5189.         ES:DI -> 56-byte record describing subsystem (see #0446)
  5190.     CF set on error
  5191.         AH = status
  5192.         01h nonexistent subsystem
  5193.         86h function not supported
  5194.         AL = 00h
  5195. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  5196. SeeAlso: AX=DB00h,AX=DB02h
  5197.  
  5198. (Table 0445)
  5199. Values for AMI BIOS subsystem identifier:
  5200.  00h    recovery code
  5201.  01h    system BIOS
  5202.  02h    PCI configuration data
  5203.  03h    OEM logo data area (see #0447)
  5204.  04h    system BIOS/Language Set (one system)
  5205.     configuration utility (another system)
  5206. SeeAlso: #0446
  5207.  
  5208. Format of AMI BIOS subsystem information:
  5209. Offset    Size    Description    (Table 0446)
  5210.  00h    BYTE    subsystem identifier/logical area type (see #0445)
  5211.  01h    DWORD    subsystem (FlashROM page) size in bytes
  5212.  05h    BYTE    flag: loadable from file (FFh=yes)
  5213.  06h    BYTE    flag: reboot after update (FFh=yes)
  5214.  07h    BYTE    flag: update entire image (FFh=yes)
  5215.  08h 24 BYTEs    subsystem/logical area name
  5216.  20h    BYTE    subsystem identifier???
  5217.  21h    BYTE    flag: reprogrammable if FFh
  5218.  22h    BYTE    ??? (01h,02h seen)
  5219.  23h  5 BYTEs    ??? (apparently always 00h)
  5220.  28h 16 BYTEs    BIOS reserved string (usually version number)
  5221. SeeAlso: #0444
  5222.  
  5223. Format of AMI OEM Logo data area:
  5224. Offset    Size    Description    (Table 0447)
  5225.  00h  8 BYTEs    signature
  5226.         "TEXTLOGO" if text-mode OEM logo
  5227.         8 DUP (FFh) if unused
  5228.  08h    WORD    offset of logo font definition table
  5229.  0Ah    WORD    offset of logo data
  5230.  0Ch    WORD    size of logo font table in words
  5231.  0Eh    WORD    offset of upper left corner of logo in video page
  5232.  10h    WORD    width of logo
  5233.  12h    WORD    height of logo
  5234.  14h    BYTE    reserved???
  5235.  var    var    logo font definition (16 bytes per character)
  5236.  var    var    logo data as character/attribute pairs
  5237. Note:    the attribute for the logo characters specifies which font will be used
  5238.       for that character.  If bit 3 is cleared, the normal system font is
  5239.       used; if bit 3 is set, the logo font is used, with screen colors
  5240.       adjusted to match the corresponding non-bright attribute for the
  5241.       system font
  5242. SeeAlso: #0445,#0446
  5243. --------b-15DB02-----------------------------
  5244. INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF FLASH ROM PROGRAMMING CODE
  5245.     AX = DB02h
  5246. Return: CF clear
  5247.     AX = 0000h
  5248.     BX = size of ROM programming code in bytes
  5249. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  5250. SeeAlso: AX=DB00h,AX=DB03h
  5251. --------b-15DB03-----------------------------
  5252. INT 15 U - AMI BIOS - Flash ROM - GET FLASH ROM PROGRAMMING CODE
  5253.     AX = DB03h
  5254.     DS:SI -> ???
  5255.     ES:DI -> buffer for Flash ROM programming code
  5256.     BX = ???
  5257.     DX = ???
  5258. Return: CF clear if successful
  5259.         AH = ???
  5260.         BX = ???
  5261.         DX = ???
  5262.     CF set on error
  5263.         AH = error code
  5264. Notes:    the entry point for the copied code (which is fully relocatable) is
  5265.       the very first byte (see #0448)
  5266.     used by FMUP.EXE, Intel's Flash Memory Update utility
  5267. SeeAlso: AX=DB00h,AX=DB02h
  5268.  
  5269. (Table 0448)
  5270. Call AMI BIOS ??? code with:
  5271.     AL = function
  5272.         00h erase Flash ROM block
  5273.         CX = ???
  5274.             bit 8: address line A16 inverted
  5275.         ???
  5276.         01h program new data into Flash ROM
  5277.         ???
  5278.         02h perform cold reboot
  5279.     DS:SI -> ??? (see #0449)
  5280.     ES:DI -> ???
  5281. Return: AH = status
  5282.         00h successful
  5283.         01h invalid function
  5284.         02h ???
  5285.         03h ???
  5286.         04h ???
  5287. Note:    DS:SI and ES:DI are ignored for function 02h
  5288.  
  5289. Format of AMI BIOS Flash ROM programming parameters:
  5290. Offset    Size    Description    (Table 0449)
  5291.  00h 32 BYTEs    ???
  5292.  20h    BYTE    BIOS section number
  5293.  21h    DWORD    length of BIOS code/data in bytes
  5294.  25h 43 BYTEs    ???
  5295.  50h    DWORD    ???
  5296.  54h 44 BYTEs    ???
  5297. SeeAlso: #0448
  5298. --------b-15DB04-----------------------------
  5299. INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION
  5300.     AX = DB04h
  5301. Return: CF clear if supported
  5302.         BL:BH:DL:DH = BIOS revision string
  5303.         (e.g. 'AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M)
  5304.         CL = flag: DH valid?
  5305.         00h ignore DH; ignore DL as well if 20h (space)
  5306.         01h ignore DH if 20h (space)
  5307.         CH = BIOS status
  5308.         00h normal mode
  5309.         01h ROM recovery mode
  5310.         AL = ??? (02h)
  5311. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  5312. SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h
  5313. --------Q-15DE00-----------------------------
  5314. INT 15 - DESQview - GET PROGRAM NAME
  5315.     AX = DE00h
  5316. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  5317.           the "Switch Windows" menu (see #0450)
  5318. Note:    always returns AX=0000h under DESQview/X
  5319. SeeAlso: AX=DE07h
  5320.  
  5321. Format of program entry in DESQVIEW.DVO:
  5322. Offset    Size    Description    (Table 0450)
  5323.  00h    BYTE    length of name (FFh if end of file)
  5324.  01h  N BYTEs    name
  5325.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  5326.     BYTE    program type
  5327.         00h normal program
  5328.         04h divider
  5329.         80h Delete a Program
  5330.         81h Change a Program
  5331.     WORD    ??? apparently always 0000h
  5332. --------Q-15DE01-----------------------------
  5333. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  5334.     AX = DE01h
  5335. Return: nothing
  5336. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  5337.     NOP for DESQview/X
  5338. --------Q-15DE02-----------------------------
  5339. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  5340.     AX = DE02h
  5341. Return: nothing
  5342. Note:    this call is a NOP in DV 2.x
  5343. SeeAlso: AX=DE03h
  5344. --------Q-15DE03-----------------------------
  5345. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  5346.     AX = DE03h
  5347. Return: AX = ??? for current window
  5348.     BX = ??? for current window
  5349. Note:    this call is a NOP in DV 2.x
  5350. SeeAlso: AX=DE02h
  5351. --------Q-15DE04-----------------------------
  5352. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  5353.     AX = DE04h
  5354. Return: BX = bytes of common memory available
  5355.     CX = largest block available
  5356.     DX = total common memory in bytes
  5357. SeeAlso: AX=DE05h,AX=DE06h
  5358. --------Q-15DE05-----------------------------
  5359. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  5360.     AX = DE05h
  5361. Return: BX = KB of memory available
  5362.     CX = largest block available
  5363.     DX = total conventional memory in KB
  5364. SeeAlso: AX=DE04h,AX=DE06h
  5365. --------Q-15DE06-----------------------------
  5366. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  5367.     AX = DE06h
  5368. Return: BX = KB of expanded memory available
  5369.     CX = largest block available
  5370.     DX = total expanded memory in KB
  5371. SeeAlso: AX=DE04h,AX=DE05h
  5372. --------Q-15DE07-----------------------------
  5373. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  5374.     AX = DE07h
  5375. Return: AX = number of program as it appears on the "Switch Windows" menu
  5376. Note:    this API call may be made from a hardware interrupt handler
  5377. SeeAlso: AX=DE00h
  5378. --------Q-15DE08-----------------------------
  5379. INT 15 - DESQview - GET ???
  5380.     AX = DE08h
  5381. Return: AX = 0000h if ??? is not set to the current task
  5382.          0001h if ??? is set to the current task
  5383. --------Q-15DE09-----------------------------
  5384. INT 15 - DESQview - UNIMPLEMENTED
  5385.     AX = DE09h
  5386. Return: nothing (NOP in DV 1.x and 2.x)
  5387. --------Q-15DE0A-----------------------------
  5388. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  5389.     AX = DE0Ah
  5390.     BL = character
  5391. Return: character displayed, next call will display in next position (which
  5392.     wraps back to the start of the line if off the right edge of screen)
  5393. Notes:    displays character on bottom line of *physical* screen, regardless
  5394.       of current size of window (even entirely hidden)
  5395.     does not know about graphics display modes, just pokes the characters
  5396.       into display memory
  5397.     this API call may be made from a hardware interrupt handler
  5398. SeeAlso: AX=1003h
  5399. --------Q-15DE0B-----------------------------
  5400. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  5401.     AX = DE0Bh
  5402.     BL = API level minor version number
  5403.     BH = API level major version number
  5404. Return: AX = maximum API level (AH = major, AL = minor)
  5405. Notes:    if the requested API level is greater than the version of DESQview, a
  5406.       "You need a newer version" error window is popped up
  5407.     the API level defaults to 1.00, and is inherited by child tasks
  5408. --------Q-15DE0C-----------------------------
  5409. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  5410.     AX = DE0Ch
  5411.     BX = number of bytes
  5412. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  5413. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  5414.       system memory
  5415. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  5416. --------Q-15DE0D-----------------------------
  5417. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  5418.     AX = DE0Dh
  5419.     ES:DI -> previously allocated block
  5420. Return: nothing
  5421. SeeAlso: AX=1002h,AX=DE0Ch
  5422. --------Q-15DE0E-----------------------------
  5423. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  5424.     AX = DE0Eh
  5425.     ES:DI -> name to find (see #0451)
  5426.     CX = length of name
  5427. Return: BX = 0000h not found
  5428.          0001h found
  5429.         DS:SI = object handle
  5430. SeeAlso: AH=12h/BH=11h,AH=12h/BH=12h"GETNAME"
  5431.  
  5432. (Table 0451)
  5433. Values for special DESQview mailbox names:
  5434.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  5435.  "DESQview/X Help Engine"
  5436.  "DESQview/X Network Server"  Network Manager
  5437.  "DESQview X Server0"    X-Windows server
  5438.  "DESQview X Server7"    X-Windows printing service
  5439.  "INBOX"        DESQview/X LPD requests
  5440.  "OUTBOX"        DESQview/X LPD responses
  5441.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  5442.  "_DVNM_"        DV/X v1.10 network manager
  5443. --------Q-15DE0F-----------------------------
  5444. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  5445.     AX = DE0Fh
  5446. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  5447. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  5448.     enables an additional mouse mode
  5449. --------Q-15DE10-----------------------------
  5450. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  5451.     AX = DE10h
  5452.     BH = scan code
  5453.     BL = character
  5454. Return: nothing
  5455. Notes:    a later read will get the keystroke as if it had been typed by the user
  5456.     multiple pushes are read last-in first-out
  5457.     if a script exists for the pushed key in the current application, the
  5458.       script will be executed
  5459.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  5460. SeeAlso: INT 16/AH=05h
  5461. --------Q-15DE11BL00-------------------------
  5462. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  5463.     AX = DE11h
  5464.     BL = 00h      viewport will not move automatically
  5465.          nonzero  viewport will move to keep cursor visible (default)
  5466. Return: nothing
  5467. --------Q-15DE12BX0000-----------------------
  5468. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  5469.     AX = DE12h
  5470.     BX = 0000h    select normal style (linefeed only moves down)
  5471.          nonzero  select C style (linefeed moves to start of next line)
  5472. Return: nothing
  5473. Note:    set on a per-task basis, and inherited from the parent task
  5474. --------Q-15DE13-----------------------------
  5475. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  5476.     AX = DE13h
  5477. Return: BX = number of calls to BEGINC or ENTERC
  5478.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  5479.           (see INT 15/AX=101Ch)
  5480. Note:    this API call may be made from within a hardware interrupt handler
  5481. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  5482. --------Q-15DE14-----------------------------
  5483. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  5484.     AX = DE14h
  5485.     ES:DI -> object
  5486. Return: BL = 00h not an object
  5487.          08h window or task
  5488.          09h mailbox
  5489.          0Ah keyboard
  5490.          0Bh timer
  5491.          0Ch objectq
  5492.          0Fh pointer
  5493.          10h panel
  5494. SeeAlso: AX=1016h
  5495. --------Q-15DE15-----------------------------
  5496. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  5497.     AX = DE15h
  5498.     BL = error handling mode
  5499.         00h post system error on all error conditions
  5500.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  5501.         messages sent to mailboxes which fail due to lack of system
  5502.         or common memory
  5503.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  5504.         calls which fail due to lack of system memory
  5505. Return: nothing
  5506. SeeAlso: AX=DE0Ch,AX=DE16h
  5507. --------Q-15DE16-----------------------------
  5508. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  5509.     AX = DE16h
  5510. Return: BL = current mode
  5511.         00h always post system error
  5512.         01h return carry flag set on failed mailbox writes
  5513.         02h return CF set on failed mailbox writes and NULL on failed
  5514.         GETMEM calls
  5515. SeeAlso: AX=DE15h
  5516. --------Q-15DE17-----------------------------
  5517. INT 15 - DESQview v2.20-2.25 - reserved
  5518.     AX = DE17h
  5519. Return: pops up "Programming error" window
  5520. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  5521. SeeAlso: AX=1117h
  5522. --------Q-15DE17-----------------------------
  5523. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  5524.     AX = DE17h
  5525.     BX = function
  5526.         0000h   get current mapping context without setting
  5527.         nonzero set new mapping context to BX
  5528. Return: BX = mapping context in effect before call
  5529. Notes:    mapping contexts determine conventional-memory addressability; setting
  5530.       a mapping context ensures that the associated program and data areas
  5531.       are in memory for access.  Usable by drivers, TSRs and shared
  5532.       programs.
  5533.     caller need not be running under DESQview
  5534.     this API call may be made from a hardware interrupt handler
  5535. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  5536. --------Q-15DE18-----------------------------
  5537. INT 15 - DESQview v2.20+ - internal - ???
  5538.     AX = DE18h
  5539.     BP = function number
  5540.         high byte must be 10h
  5541.         low byte is function
  5542.         00h set ???
  5543.             BL = ???  (00h-10h, video mode???)
  5544.             BH = value to store
  5545.         03h set ???
  5546.             BL = ??? (stored in driver)
  5547.         0Ah get ???
  5548.             ES:DI -> 18-byte buffer to hold ???
  5549. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  5550. --------Q-15DE19-----------------------------
  5551. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  5552.     AX = DE19h
  5553.     BX = number of bytes to allocate
  5554. Return: AX = 0000h successful
  5555.         ES:DI -> allocated block
  5556.          nonzero insufficient memory
  5557. Note:    this API call may be made from within a hardware interrupt handler
  5558. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  5559. --------Q-15DE1A-----------------------------
  5560. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  5561.     AX = DE1Ah
  5562.     ES:DI -> previously allocated block
  5563. Return: AX = 0000h (successful)
  5564. Note:    this function may be called from within a hardware interrupt handler
  5565. SeeAlso: AX=DE0Dh,AX=DE19h
  5566. --------Q-15DE1B-----------------------------
  5567. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  5568.     AX = DE1Bh
  5569. Return: nothing
  5570. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  5571. --------Q-15DE1C-----------------------------
  5572. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  5573.     AX = DE1Ch
  5574. Return: nothing
  5575. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  5576.       that DOS is free
  5577.     the official documentation states that this call should be paired with
  5578.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  5579.     this API call may be made from within a hardware interrupt handler
  5580. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  5581. --------Q-15DE1D-----------------------------
  5582. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  5583.     AX = DE1Dh
  5584.     DX = segment of handle for task to receive keystroke
  5585.     BL = character
  5586.     BH = scan code
  5587. Return: AX = 0000h if successful
  5588.        nonzero if receiver's keyboard buffer was full
  5589. Notes:    the key is treated as though the user had pressed it, ignoring any
  5590.       script which may be bound to the key, and using the current field
  5591.       table if the keyboard object is in field processing mode
  5592.     multiple PUTKEYs are seen in the order in which they are executed
  5593. SeeAlso: AX=DE10h
  5594. --------Q-15DE1E-----------------------------
  5595. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  5596.     AX = DE1Eh
  5597. Return: CL = actual number of rows on screen
  5598.     CH = actual number of columns on screen
  5599.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  5600. Note:    this API call may be made from a hardware interrupt handler
  5601. SeeAlso: INT 10/AH=0Fh
  5602. --------Q-15DE1F-----------------------------
  5603. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  5604.     AX = DE1Fh
  5605. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  5606. Note:    this API call may be made from within a hardware interrupt handler
  5607. SeeAlso: AX=DE13h,INT 21/AH=34h
  5608. --------Q-15DE20-----------------------------
  5609. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  5610.     AX = DE20h
  5611.     BX = segment of handle of task to interupt
  5612.     DX:CX -> FAR interrupt routine
  5613.     BP,SI,DI,DS,ES as required by interrupt routine
  5614. Return: nothing
  5615. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  5616.       making the DISPATCHINT call
  5617.     multiple "DISPATCHINT" calls are processed in the order in which they
  5618.       were executed
  5619.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  5620.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  5621.       needs to be preserved
  5622.     this API call may be made from within a hardware interrupt handler
  5623. SeeAlso: AX=1021h,AX=DE2Ah
  5624. --------Q-15DE21-----------------------------
  5625. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  5626.     AX = DE21h
  5627.     BX = new state
  5628.         0000h turn off
  5629.         nonzero turn on
  5630. Return: BX = old state of virtualization
  5631. Notes:    this API call may be made from within a hardware interrupt handler
  5632.     under DV 2.40 and 2.42, this call appears to have no effect and always
  5633.       returns a nonzero value in BX which appears to be the offset within
  5634.       the DV common memory segment of the caller's task object; it may
  5635.       only have an effect within a hardware interrupt handler
  5636. SeeAlso: AX=1117h,AX=DE17h
  5637. --------Q-15DE22-----------------------------
  5638. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  5639.     AX = DE22h
  5640.     DX = segment of task handle
  5641. Return: DX = total amount of memory in paragraphs
  5642.     BX = amount of system memory in paragraphs
  5643.     CX = largest block of system memory available in paragraphs
  5644.     AX = memory flags (see #0452)
  5645. Notes:    if the task handle is a child task, the returned values will be for the
  5646.       process containing the task, rather than the task itself
  5647.     if the process's system memory is swapped out, BX,CX,DX remain
  5648.       unchanged, because the memory usage cannot be determined
  5649. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  5650.  
  5651. Bitfields for DESQview process memory flags:
  5652. Bit(s)    Description    (Table 0452)
  5653.  0    system memory resides in shared memory
  5654.  1    process's memory is swapped out
  5655.  2    process's system memory is swapped out
  5656. --------Q-15DE23-----------------------------
  5657. INT 15 U - DESQview v2.31+ - ???
  5658.     AX = DE23h
  5659.     BX = ??? IRQ number on first PIC?
  5660.     CX = ??? IRQ number on second PIC?
  5661. Return: ???
  5662. Note:    called by QEMM 6.00+
  5663. --------Q-15DE24-----------------------------
  5664. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  5665.     AX = DE24h
  5666.     BX = length of .DVP data
  5667.     CX = length of ??? string
  5668.     DS:SI -> ??? string
  5669.     ES:DI -> .DVP data (see #0331 at AX=102Ch)
  5670. Return: BX = segment of task handle??? or 0000h on error
  5671. Note:    this call is similar to AX=102Ch except that it can interpret the
  5672.       extended DVP data
  5673. SeeAlso: AX=102Ch
  5674. --------Q-15DE25-----------------------------
  5675. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  5676.     AX = DE25h
  5677.     ES:DI -> 67-byte buffer for ASCIZ directory name
  5678. Return: ES:DI buffer filled with directory from which DESQview was started
  5679. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  5680.       name, so if the buffer is not cleared to zeros before the call,
  5681.       there is no way to tell where the directory name ends.  This bug
  5682.       has been fixed in DV 2.52 (DV/X 1.02)
  5683. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  5684. --------Q-15DE26-----------------------------
  5685. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  5686.     AX = DE26h
  5687. Return: BX = segment of handle for task with keyboard focus
  5688. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  5689.       "direct" window is active
  5690. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  5691. --------Q-15DE27-----------------------------
  5692. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  5693.     AX = DE27h
  5694.     BX = type
  5695.         0000h process
  5696.         0001h task
  5697.     ES:DI -> list of Instance Item Structures (see #0453)
  5698. Return: CF clear if successful
  5699.         AX = ???
  5700.         BX = ???
  5701.     CF set on error
  5702.         AX = error code???
  5703.         0004h invalid BX value
  5704. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5705. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  5706.  
  5707. Format of DESQview Instance Item Structure [one element of list]:
  5708. Offset    Size    Description    (Table 0453)
  5709.  00h    WORD    length of data area DESQview should save and restore on context
  5710.           switches (0000h = end of list)
  5711.  02h    DWORD    pointer to area to be saved/restored
  5712. --------Q-15DE28-----------------------------
  5713. INT 15 U - DESQview v2.50+ - ???
  5714.     AX = DE28h
  5715.     BX = segment of ??? or 0000h for default
  5716.     ???
  5717. Return: ???
  5718. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5719. SeeAlso: AX=DE2Ah
  5720. --------Q-15DE29BX0000-----------------------
  5721. INT 15 U - DESQview/X - ???
  5722.     AX = DE29h
  5723.     BX = 0000h
  5724.     ???
  5725. Return: CF clear if successful
  5726.         ???
  5727.     CF set on error
  5728. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5729.     under DESQview 2.60, this function and all other subfunctions of
  5730.       AX=DE29h always return CF set, as they are unique to DESQview/X
  5731. --------Q-15DE29BX0001-----------------------
  5732. INT 15 U - DESQview/X - ???
  5733.     AX = DE29h
  5734.     BX = 0001h
  5735.     DX = segment of window handle
  5736. Return: CF clear if successful
  5737.         AX = ???
  5738.         DX = ???
  5739.     CF set on error
  5740. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5741. --------Q-15DE29BX0002-----------------------
  5742. INT 15 U - DESQview/X - ???
  5743.     AX = DE29h
  5744.     BX = 0002h
  5745.     DX = segment of window handle
  5746. Return: CF clear if successful
  5747.         AX = ???
  5748.         DX = ???
  5749.     CF set on error
  5750. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5751. --------Q-15DE29BX0003-----------------------
  5752. INT 15 U - DESQview/X - ???
  5753.     AX = DE29h
  5754.     BX = 0003h
  5755.     DX = segment of window handle
  5756. Return: CF clear if successful
  5757.         ???
  5758.     CF set on error
  5759. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5760. --------Q-15DE29BX0004-----------------------
  5761. INT 15 U - DESQview/X - GET DISPLAY NAME
  5762.     AX = DE29h
  5763.     BX = 0004h
  5764.     CX = size of buffer in bytes
  5765.     DX = segment of window handle
  5766.     ES:DI -> buffer for display name
  5767. Return: CF clear if successful
  5768.         buffer filled with ASCIZ display name (truncated if necessary) or
  5769.           null string if no display
  5770.     CF set on error
  5771. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5772.     the name ":0" refers to the local display
  5773. --------Q-15DE29BX0005-----------------------
  5774. INT 15 U - DESQview/X - ???
  5775.     AX = DE29h
  5776.     BX = 0005h
  5777.     ???
  5778. Return: CF clear if successful
  5779.         ???
  5780.     CF set on error
  5781. Note:    under DESQview 2.60, this function and all other subfunctions of
  5782.       AX=DE29h always return CF set, as they are unique to DESQview/X
  5783. --------Q-15DE2A-----------------------------
  5784. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  5785.     AX = DE2Ah
  5786.     BX = segment of handle for task to interrupt or 0000h for caller
  5787.     DX:CX -> interrupt routine
  5788.     BP,SI,DI,DS,ES as required by interrupt routine
  5789. Return: nothing
  5790. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5791.     this call is the same as AX=DE20h except that it will delay
  5792.       interrupting the specified task until after it has exited DOS
  5793. SeeAlso: AX=1021h,AX=DE20h
  5794. --------Q-15DE2B-----------------------------
  5795. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  5796.     AX = DE2Bh
  5797.     ES:DI -> starting object
  5798.         0000h:0000h for first object in list???
  5799. Return: AX = status
  5800.         0000h successful
  5801.         ES:DI -> next object of same type (window/non-window)
  5802.         0001h failed (ES:DI was not a valid handle)
  5803. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5804.     there are two separate lists, one for window/task objects and one
  5805.       for all other objects
  5806. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  5807. --------Q-15DE2C-----------------------------
  5808. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  5809.     AX = DE2Ch
  5810.     DX = window information format version (0100h for DESQview 2.5x)
  5811.     BX = segment of window handle or 0000h for default
  5812.     ES:DI -> buffer for window information (see #0454)
  5813. Return: AX = status
  5814.         0000h successful
  5815. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5816. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  5817.  
  5818. Format of DESQview window information:
  5819. Offset    Size    Description    (Table 0454)
  5820.  00h    BYTE    task flag: 00h window, 01h task
  5821.  01h    BYTE    process number if owner task
  5822.         00h if non-owner task
  5823.  02h    WORD    segment of owner's handle, 0000h if orphaned
  5824.  04h    WORD    mapping context (see #0320 at AX=1016h)
  5825.  06h    BYTE    task status (see #0455)
  5826.  07h    BYTE    unused
  5827.  08h    WORD    status bits (see #0456)
  5828.  0Ah    BYTE    01h if foreground-only window
  5829.  
  5830. (Table 0455)
  5831. Values for DESQview task status:
  5832.  00h    "Waiting" waiting for input
  5833.  01h    "Idle" keyboard poll limit reached
  5834.  03h    same as 01h
  5835.  04h    "Pausing" INT 15/AX=1000h pause called
  5836.  04h    DV/X direct: user did something to allow task switch
  5837.  05h    "ModeChg" video mode about to be changed
  5838.  06h    "ModeNtf" notify that video mode changed
  5839.  07h    "MoniCh" requested change to other monitor
  5840.  08h    "StartPgm" control relinquished to start new process
  5841.  09h    "MgrCan" made window manager CANCEL command
  5842.  0Ah    "Slicing" time slice expired
  5843.  0Bh    "Exit DOS" notify on DOS calls
  5844.  0Ch    "Enter DOS" process is re-entering DOS
  5845.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  5846.  0Eh    "BrkNxt" Control-Break pressed
  5847.  0Fh    "MgrCol" keyboard focus taken away
  5848.  10h    "PgmInt" interrupted by API call from another task
  5849.  11h    "BldOpen" call to INT 15/AX=DE01h
  5850.  
  5851. Bitfields for DESQview task status bits:
  5852. Bit(s)    Description    (Table 0456)
  5853.  6    task is freeing another task
  5854.  5    process is being created
  5855.  4    user suspended process
  5856.  3    process suspended itself
  5857.  2    process is resized direct window (suspended)
  5858.  1    process swapped out
  5859.  0    DESQview process
  5860. --------Q-15DE2D-----------------------------
  5861. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  5862.     AX = DE2Dh
  5863.     CX = direction
  5864.         FFFFh set socket handler
  5865.         DX:BX -> FAR function for socket interface
  5866.             must be of the format described under INT 63"DESQview"
  5867.               at #2764
  5868.         other get socket handler
  5869.         Return: DX:BX -> socket handler (see #2764)
  5870. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5871.     the "set" subfunction is normally called only by SOCKET.DVR
  5872. SeeAlso: AX=DE2Eh,INT 63"DESQview",#2764
  5873. --------Q-15DE2E-----------------------------
  5874. INT 15 U - DESQview v2.50+ - SOCKET API
  5875.     AX = DE2Eh
  5876.     DX:BX -> socket record (see #0458)
  5877.         0000h:0000h to create a new socket record
  5878. Return: CX = size of socket record in bytes
  5879.     DX:BX -> socket record which was used
  5880. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5881.     socket records are allocated from common memory
  5882.     for Unix compatibility, each socket and connection on a socket is
  5883.       allocated a DOS file handle (referencing an SFT for NUL) which is
  5884.       used on various calls to specify which of possibly multiple
  5885.       connections is to be operated upon
  5886. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  5887.  
  5888. (Table 0457)
  5889. Values for DESQview/X socket API function number:
  5890.  0000h    initialize socket???
  5891.  0001h    "gethostname"
  5892.  0002h    "ioctl" check for input
  5893.  0003h    "sleep" delay for specified period
  5894.  0004h    "htons" convert word to network (big-endian) byte order
  5895.  0005h    "select"
  5896.  0006h    "bsd_close"/"so_close" close socket
  5897.  0007h    NOP
  5898.  0008h    "connect" initiate connection on socket
  5899.  0009h    "recv"/"recvfrom" read from socket
  5900.  000Ah    "socket"
  5901.  000Bh    ???
  5902.  000Ch    "gethostbyname"
  5903.  000Dh    "send"/"sendto" write to socket
  5904.  000Eh    ??? (does something to all connections for process)
  5905.  000Fh    "getpid" get process identifier
  5906.  0010h    "gettimeofday"
  5907.  0011h    "bind" assign name to socket
  5908.  0012h    "listen" listen for connections on socket
  5909.  0013h    "accept" accept connection on socket
  5910.  0014h    connect to X server
  5911.  0015h    "gethostbyaddr" get host information for an address
  5912.  0016h    "getprotobyname"
  5913.  0017h    "getprotobynumber"
  5914.  0018h    "getservbyname"
  5915.  0019h    "getservbyport"
  5916.  001Ah    "getsockname" determine name bound to socket
  5917.  001Bh    "getpeername" get name of connected peer
  5918.  001Ch    "getsockopt"/"setsockopt"
  5919.  001Dh    "so_exit"     close all sockets for calling process
  5920.  001Eh    "issock" determine whether file handle references socket
  5921.  001Fh    "so_attach" reattach previously detached socket
  5922.  0020h    "so_detach" temporarily detach socket
  5923.  0021h    "dvpath" get DESQview directory (see also AX=DE24h)
  5924.  0022h    "NewProc" start new application (see also AX=102Ch)
  5925.  0023h    "so_linkup"
  5926.  0024h    "CanonicalPath" canonicalize filename (see also INT 21/AH=60h)
  5927.  0025h    indirect INT 15h call
  5928.  0026h    Network Manager interface
  5929.  0027h    "so_unlink"    close connection from "so_linkup"
  5930.  0028h    "raisepriority"
  5931.  0029h    "lowerpriority"
  5932.  002Ah    "so_private" ???
  5933.  FFFFh    "NetExit" (appears to be a NOP)
  5934.  
  5935. Format of DESQview/X socket record:
  5936. Offset    Size    Description    (Table 0458)
  5937.  00h    WORD    signature F0ADh
  5938.  02h    WORD    function number (see #0457)
  5939.  04h    WORD    returned error code (see #0478)
  5940.  06h    WORD    maximum message size??? (usually 0400h)
  5941.  08h    WORD    PSP segment to use or 0000h if socket not valid
  5942.  0Ah    WORD    scratch space (JFT size)
  5943.  0Ch    DWORD    scratch space (JFT address)
  5944.  10h    DWORD    mailbox handle (initialized by function 0000h)
  5945.  14h    DWORD    timer object handle (initialized by function 0000h)
  5946. ---function 0000h---
  5947.  18h    WORD    (ret) ???
  5948. ---function 0001h---
  5949.  18h    WORD    (ret) status???
  5950.  1Ah 128 BYTEs    (ret) ASCIZ hostname (empty string if not on network)
  5951.  9Ah    WORD    maximum length of hostname to return
  5952. ---function 0002h---
  5953.  18h    WORD    (ret) status
  5954.  1Ah    WORD    socket's file handle
  5955.  1Ch    WORD    IOCTL function
  5956.         05h "FIONREAD" determine available input
  5957.         06h "FIONBIO" set blocking state of socket
  5958.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  5959.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  5960. ---function 0003h---
  5961.  18h  2 BYTEs    unused
  5962.  1Ah    WORD    delay time in seconds
  5963. ---function 0004h---
  5964.  18h    WORD    (ret) result in network (big-endian) byte order
  5965.  1Ah    WORD    value to convert to network byte order
  5966. ---function 0005h---
  5967.  18h    WORD    (ret) number of handles meeting the specified conditions???
  5968.  1Ah    WORD    number of file handles in each bitset
  5969.  1Ch    DWORD    bitset of socket handles to check for readability
  5970.  20h    DWORD    bitset of socket handles to check for writability
  5971.  24h    DWORD    bitset of socket handles to check for errors
  5972.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  5973.  2Ah    DWORD    ???
  5974.  2Eh    DWORD    ???
  5975. ---function 0006h---
  5976.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  5977.  1Ah    WORD    socket's file handle
  5978. ---function 0008h---
  5979.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  5980.  1Ah    WORD    socket's file handle
  5981.  1Ch    WORD    0001h if socket name specified, 0000h if not
  5982.  1Eh    WORD    length of socket name
  5983.  20h  N BYTEs    name of socket to which to connect
  5984. ---function 0009h---
  5985.  18h    WORD    (ret) number of bytes actually read, 0000h if connection
  5986.             closed, or FFFFh on error
  5987.  1Ah    WORD    socket's file handle
  5988.  1Ch    WORD    number of bytes to read
  5989.  1Eh    WORD    flags
  5990.  20h    WORD    0000h if no source address desired
  5991.         0001h if source address is to be stored (datagram sockets)
  5992.  22h    WORD    length of source address
  5993.  24h 110 BYTEs    source address
  5994.  92h 1K BYTEs    buffer for data to be read
  5995. ---function 000Ah---
  5996.  18h    WORD    (ret) socket's file handle or FFFFh on error
  5997.  1Ah    WORD    address family (0001h,0002h)
  5998.  1Ch    WORD    socket type
  5999.  1Eh    WORD    protocol
  6000. ---function 000Bh---
  6001.  18h    WORD    (ret) 0001h if ??? or FFFFh on error
  6002.  1Ah    WORD    socket's file handle
  6003.  1Eh    WORD    (call) ???
  6004. ---function 000Ch---
  6005.  18h 128 BYTEs    ASCIZ hostname (special case if empty string or "unix")
  6006.  98h    ???    (ret) packed 'hostent' structure
  6007.  A2h    ???    (ret) ???
  6008. ---function 000Dh---
  6009.  18h    WORD    (ret) number of bytes actually written or FFFFh on error
  6010.  1Ah    WORD    socket's file handle
  6011.  1Ch    WORD    number of bytes to write
  6012.  1Eh    WORD    number of bytes to follow in subsequent writes???
  6013.  20h    WORD    flags
  6014.  22h    WORD    0000h if no destination specified, 0001h if destination present
  6015.  24h    WORD    0001h if broadcast message???, 0000h if not
  6016.         (ignored if no destination specified)
  6017.  26h    WORD    length of destination address
  6018.  28h 110 BYTEs    destination address
  6019.  96h 1K BYTEs    buffer containing data to be written
  6020. ---function 000Eh---
  6021.  no additional fields
  6022. ---function 000Fh---
  6023.  18h    DWORD    (ret) DESQview task handle of calling process
  6024. ---function 0010h---
  6025.  18h    DWORD    (ret) current time
  6026.  1Ch    DWORD    (ret) ???
  6027. ---function 0011h---
  6028.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6029.  1Ah    WORD    socket's file handle
  6030.  1Ch    WORD    length of name
  6031.  1Eh  N BYTEs    buffer for socket name
  6032. ---function 0012h---
  6033.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6034.  1Ah    WORD    socket's file handle
  6035.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  6036. ---function 0013h---
  6037.  18h    WORD    (ret) file handle for new connection or FFFFh on error
  6038.  1Ah    WORD    listen()ing socket's file handle
  6039.  1Ch    WORD    (call) length of buffer for connecting entity's address
  6040.         (ret) actual length of address
  6041.  1Eh  N BYTEs    buffer for connecting entity's address (110 bytes???)
  6042. ---function 0014h---
  6043.  18h    WORD    (ret) socket's file handle or FFFFh on error
  6044.  1Ah  4 BYTEs    (ret) ???
  6045.  1Eh    WORD    (ret) ???
  6046.  20h    WORD    (ret) ???
  6047.  22h 256 BYTEs    ASCIZ X display name
  6048. 122h    ???
  6049. ---function 0015h---
  6050.  18h    WORD    (call) type of address??? (test for 0001h seen)
  6051.  1Ah    WORD    (call) length of buffer for host address
  6052.  1Ch 110 BYTEs    buffer containing ASCIZ host address
  6053.  8Ah    WORD    (ret) offset of official host name
  6054.  8Ch    WORD    (ret) offset of alias list???
  6055.  8Eh    WORD    (ret) address type???
  6056.  90h    WORD    (ret) length of an address in bytes???
  6057.  92h    WORD    (ret) offset of address???
  6058.  9Ah  N BYTEs    (ret) buffer for hostname, alias list, and host address
  6059. ---function 0016h---
  6060.  18h    ???    buffer for ASCIZ protocol name
  6061.  98h    ???
  6062. ---function 0017h---
  6063.  18h    WORD    (call) protocol number
  6064.  1Ah    WORD    (ret) ??? or 0001h
  6065. ---function 0018h---
  6066.  18h 128 BYTEs    buffer containing ASCIZ ???
  6067.  98h 128 BYTEs    buffer containing ASCIZ ???
  6068. 118h    WORD    (ret) ???
  6069. ---function 0019h---
  6070.  18h    WORD    port number
  6071.  1Ah 128 BYTEs    (call) ASCIZ host name
  6072.         (ret) packed servent strctures???
  6073.  9Ah    WORD    (ret) ???
  6074. ---function 001Ah---
  6075.  18h    WORD    (ret) 0000h if successful, FFFFh on error
  6076.  1Ah    WORD    socket's file handle
  6077.  1Ch    WORD    (call) length of buffer for socket name
  6078.         (ret) actual length of socket name
  6079.  1Eh  N BYTEs    buffer for socket name
  6080. ---function 001Bh---
  6081.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6082.  1Ah    WORD    socket's file handle
  6083.  1Ch    WORD    (call) size of buffer for name
  6084.         (ret) actual size of name
  6085.  1Eh  N BYTEs    buffer for peer's name
  6086. ---function 001Ch---
  6087.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6088.  1Ah    WORD    direction: 0000h to get, 0001h to set
  6089.  1Ch    WORD    socket's file handle
  6090.  1Eh    WORD    option level
  6091.  20h    WORD    option name
  6092.  22h    WORD    (call) length of buffer for option value
  6093.         (ret) actual length of option value
  6094.  24h  N BYTEs    buffer for option value
  6095. ---function 001Dh---
  6096.  no additional fields
  6097. ---function 001Eh---
  6098.  18h    WORD    (ret) status: 0000h ??? or 0001h ???
  6099.  1Ah    WORD    file handle which may or may not be a socket
  6100. ---function 001Fh---
  6101.  18h    WORD    (ret) file handle or FFFFh on error
  6102.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0479) of a
  6103.             previously detached socket
  6104. ---function 0020h---
  6105.  18h    WORD    (ret) status: 0000h if successful or FFFFh on error
  6106.  1Ah    WORD    socket's file handle
  6107.  1Ch    DWORD    (ret) pointer to Socket Context Record (see #0479) for
  6108.             the file handle
  6109. ---function 0021h---
  6110.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  6111. ---function 0022h---
  6112.  18h    DWORD    (ret) task handle of new application
  6113.  1Ch    WORD    size of .DVP data
  6114.  1Eh 129 BYTEs    ASCIZ ???
  6115.  9Fh  N BYTEs    .DVP data (see #0331 at AX=102Ch)
  6116. ---function 0023h---
  6117.  18h    WORD    (ret) ??? or FFFFh on error
  6118.  1Ah    WORD    socket's file handle???
  6119. ---function 0024h---
  6120.  18h    WORD    (ret) DOS error code (see #1020 at INT 21/AH=59h/BX=0000h)
  6121.             0000h if successful
  6122.  1Ah 129 BYTEs    ASCIZ filename/pathname
  6123. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  6124. ---function 0025h---
  6125.  18h    WORD    value of AX
  6126.  1Ah    WORD    value of BX
  6127.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  6128.         (call) number of stack parameters if AH value is 12h
  6129.         (ret) returned CX for calls other than INT 15/AH=12h
  6130.  1Eh    WORD    value of DX
  6131.  20h    WORD    value of DI
  6132.  22h    WORD    value of SI
  6133.  24h    WORD    value of DS
  6134.  26h    WORD    value of ES
  6135.  28h    WORD    (ret) value of FLAGS after call
  6136.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  6137.         (ret) stack results from INT 15/AH=12h call
  6138. ---function 0026h---
  6139.  18h    WORD    (call) Network Manager subfunction (see #0459)
  6140.         (ret) status??? (0000h on error)
  6141.  1Ah    WORD    (call) size of parameter data
  6142.         (ret) size of returned data
  6143.  1Ch  N BYTEs    (call) parameter data required by call (see #0460,#0461,#0477)
  6144.         (ret) result data (see #0470,#0471,#0476)
  6145. ---function 0027h---
  6146.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  6147.  1Ah    WORD    socket's file handle
  6148. ---functions 0028h,0029h---
  6149.  18h    WORD    (call) file handle for which to set priority low/high
  6150.             FFFFh to change calling task's priority
  6151. ---function 002Ah---
  6152.  no additional fields
  6153.  
  6154. (Table 0459)
  6155. Values for DESQview/X Network Manager subfunction:
  6156.  0004h    "so_exit"???
  6157.  0005h    "gethostbyname"
  6158.  0006h    "gethostname"
  6159.  0009h    "socket"
  6160.  000Dh    "gethostbyaddr"
  6161.  000Fh    "getprotobyname"
  6162.  0010h    get protocol name for protocol number
  6163.  0011h    "getservbyname"
  6164.  0012h    "getservbyport" (see #0463)
  6165.  0013h    "getsockname"??? (see #0464)
  6166.  0016h    "shutdown" (see #0465)
  6167.  0017h    kill Network Manager
  6168.  0018h    "getpeername"??? (see #0466)
  6169.  0019h    ??? (called by socket function 0000h) (see #0467)
  6170.  001Ah    ??? (see #0468)
  6171.  001Bh    "so_linkup" (see #0469)
  6172.  001Dh    "getnetstatus" get network services (see #0470)
  6173.  001Fh    "getpwuid"
  6174.  0020h    "getpwnam"
  6175.  0021h    "getpwvar"
  6176.  0022h    "crypt"
  6177.  0023h    "so_unlink"
  6178.  0024h    "getlogin" (see #0471)
  6179.  0028h    "sethostent"
  6180.  0029h    "gethostent"
  6181.  002Ah    "soaddhost"
  6182.  002Bh    "soupdatehost"
  6183.  002Ch    "sodeletehost"
  6184.  002Dh    "setservent"
  6185.  002Eh    "getservent"
  6186.  002Fh    "setpwent"
  6187.  0030h    "getpwent" (see #0472)
  6188.  0031h    "sethostpath" (see #0473)
  6189.  0032h    "endservent"
  6190.  0033h    "endhostent"
  6191.  0034h    "getnettype" get IP network number (see #0474)
  6192.  0035h    ??? (pops up Network Manager window)
  6193.  0037h    "getnettimeout" (see #0475)
  6194.  0038h    get machine name and IP address (see #0476)
  6195.  0039h    "getuid" (see #0477)
  6196. ---DV/X v2.0+ ---
  6197.  0041h    "deletepwnam"
  6198.  0045h    "renamepw"
  6199.  
  6200. Format of Function 0026h/Subfunction 000Fh data:
  6201. Offset    Size    Description    (Table 0460)
  6202.  00h  8 BYTEs    (ret) ???
  6203.  
  6204. Format of Function 0026h/Subfunction 0010h data:
  6205. Offset    Size    Description    (Table 0461)
  6206.  00h  2 BYTEs    (ret) ???
  6207.  02h    WORD    (ret) protocol number
  6208.  04h    WORD    (call) protocol number for which to get name
  6209.  06h    WORD    (ret) ???
  6210.  08h    var    (ret) ASCIZ protocol name
  6211.  N    var    (ret) ASCIZ protocol name
  6212.  
  6213. Format of Function 0026h/Subfunction 0011h data:
  6214. Offset    Size    Description    (Table 0462)
  6215.  00h  8 BYTEs    ???
  6216.  08h    var    (ret) ASCIZ protocol name
  6217.     var    (ret) ASCIZ ??? name
  6218.     var    (ret) ASCIZ ??? name
  6219.  
  6220. Format of Function 0026h/Subfunction 0012h data:
  6221. Offset    Size    Description    (Table 0463)
  6222.  00h  8 BYTEs    (ret) ???
  6223.  
  6224. Format of Function 0026h/Subfunction 0013h data:
  6225. Offset    Size    Description    (Table 0464)
  6226.  00h 116 BYTEs    (ret) ???
  6227.  
  6228. Format of Function 0026h/Subfunction 0016h ("shutdown") data:
  6229. Offset    Size    Description    (Table 0465)
  6230.  00h    WORD    (ret) shutdown status (0000h successful, FFFFh error)
  6231.  02h  4 BYTEs    (ret) ???
  6232.  04h    WORD    (call) socket handle
  6233.  06*h    WORD    (call) what (0 = receives, 1 = sends, 2 = both)
  6234.  
  6235. Format of Function 0026h/Subfunction 0018h data:
  6236. Offset    Size    Description    (Table 0466)
  6237.  00h 116 BYTEs    (ret) ???
  6238.  
  6239. Format of Function 0026h/Subfunction 0019h data:
  6240. Offset    Size    Description    (Table 0467)
  6241.  00h  4 BYTEs    (ret) ???
  6242.  04h    DWORD    (ret) task handle of ???
  6243.  
  6244. Format of Function 0026h/Subfunction 001Ah data:
  6245. Offset    Size    Description    (Table 0468)
  6246.  00h 38 BYTEs    (ret) ???
  6247.  
  6248. Format of Function 0026h/Subfunction 001Bh data:
  6249. Offset    Size    Description    (Table 0469)
  6250.  00h 10 BYTEs    (ret) ???
  6251.  
  6252. Format of Function 0026h/Subfunction 001Dh return data [array]:
  6253. Offset    Size    Description    (Table 0470)
  6254.  00h    WORD    ??? or FFFFh if end of array
  6255.  02h  7 BYTEs    ???
  6256.  09h 27 BYTEs    ASCIZ name of service
  6257.  
  6258. Format of Function 0026h/Subfunction 0024h return data:
  6259. Offset    Size    Description    (Table 0471)
  6260.  00h    var    ASCIZ username
  6261.  
  6262. Format of Function 0026h/Subfunction 0030h data:
  6263. Offset    Size    Description    (Table 0472)
  6264.  00h    WORD    (call) UID or 0000h for current user
  6265.         (ret) ???
  6266.  02h    WORD    (ret) UID
  6267.  04h  6 BYTEs    (ret) ???
  6268.  0Ah    var    (ret) ASCIZ username
  6269.     var    (ret) ASCIZ encrypted password
  6270.     var    (ret) ASCIZ initial ("home") directory
  6271.  
  6272. Format of Function 0026h/Subfunction 0031h ("sethostpath") data:
  6273. Offset    Size    Description    (Table 0473)
  6274.  00h   4 BYTEs    ???
  6275.  04h 144 BYTEs    ASCIZ ???
  6276.  
  6277. Format of Function 0026h/Subfunction 0034h data:
  6278. Offset    Size    Description    (Table 0474)
  6279.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  6280.  
  6281. Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data:
  6282. Offset    Size    Description    (Table 0475)
  6283.  00h    WORD    (ret) timeout
  6284.  02h  2 BYTEs    (ret) ???
  6285.  
  6286. Format of Function 0026h/Subfunction 0038h return data:
  6287. Offset    Size    Description    (Table 0476)
  6288.  00h    BYTE    ???
  6289.  01h  4 BYTEs    IP address
  6290.  05h    var    ASCIZ machine name
  6291.     ???
  6292.  
  6293. Format of Function 0026h/Subfunction 0039h ("getuid") return data:
  6294. Offset    Size    Description    (Table 0477)
  6295.  00h    WORD    user ID
  6296.  02h  2 BYTEs    ???
  6297. SeeAlso: #0473,#0476
  6298.  
  6299. (Table 0478)
  6300. Values for DESQview/X socket error code:
  6301.  0000h    successful
  6302.  0009h    "BADF" bad file handle
  6303.  000Ch    "ENOMEM" out of memory
  6304.  000Eh    "EFAULT" bad address
  6305.  0016h    "EINVAL" invalid argument
  6306.  0018h    "EMFILE" too many open files
  6307.  0020h    "EPIPE" ??? broken pipe
  6308.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  6309.  0024h    "EINPROGRESS" operation now in progress
  6310.  0026h    "ENOTSOCK" socket invalid
  6311.  0028h    "EMSGSIZE" message too long to send atomically
  6312.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  6313.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  6314.  0031h    "EDOM" argument too large
  6315.  0038h    "EISCONN" socket is already connected
  6316.  0039h    "ENOTCONN" socket is not connected
  6317.  
  6318. Format of DESQview/X Socket Context Record:
  6319. Offset    Size    Description    (Table 0479)
  6320.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  6321.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  6322.  06h    WORD    PSP segment of owner or 0000h
  6323.  08h    WORD    mapping context of owning window (see #0320 at AX=1016h)
  6324.  0Ah  2 BYTEs    ???
  6325.  0Ch    WORD    address family
  6326.  0Eh    WORD    socket type
  6327.  10h    WORD    protocol
  6328.  12h    WORD    socket state
  6329.         0001h created
  6330.         0002h bound
  6331.         0003h listening???
  6332.         0005h connected
  6333.  14h    DWORD    timer object handle
  6334.  18h    DWORD    object handle (mailbox???)
  6335.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  6336.  20h    DWORD    pointer to ??? or 0000h
  6337.  24h  6 BYTEs    ???
  6338.  2Ah    WORD    file handle for socket or FFFFh
  6339.  2Ch  2 BYTEs    ???
  6340.  2Eh    WORD    nonzero if socket nonblocking
  6341. ---network connections only---
  6342.  30h  2 BYTEs    ???
  6343.  32h    WORD    ???
  6344.  34h  4 BYTEs    (big-endian) IP address of remote
  6345.  38h  6 BYTEs    ???
  6346. --------Q-15DE2F-----------------------------
  6347. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  6348.     AX = DE2Fh
  6349. Return: BX = status
  6350.         0001h keyboard focus has been given to a direct window since the
  6351.         last call
  6352.         0000h if not
  6353. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  6354.     Quarterdeck stated that this call would not be available under future
  6355.       versions of DESQview Classic, but it is still present in v2.60
  6356. --------Q-15DE30-----------------------------
  6357. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  6358.     AX = DE30h
  6359. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  6360. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  6361.     you must first check the DESQview version to verify that it is 2.50 or
  6362.       greater
  6363. SeeAlso: INT 21/AH=2Bh/CX=4445h
  6364. --------Q-15DE31-----------------------------
  6365. INT 15 - DESQview/X v1.10 - ???
  6366.     AX = DE31h
  6367.     CX = ???
  6368.         0000h ???
  6369.         nonzero ???
  6370.     ???
  6371. Return: ???
  6372. --------b-15DF-------------------------------
  6373. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  6374.     AH = DFh
  6375.     AL = function
  6376.         00h turn on Turbo mode
  6377.         01h turn off Turbo mode
  6378.         02h set Turbo mode according to hardware switch
  6379. SeeAlso: INT 13/AX=FFFFh
  6380. --------b-15E00F-----------------------------
  6381. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  6382.     AX = E00Fh
  6383.     ES:BX -> start of 2nd processor's execution
  6384. Return: AL = status
  6385.         0Fh successful
  6386.         00h failure
  6387. SeeAlso: AX=E10Eh,AX=E200h
  6388. --------b-15E10E-----------------------------
  6389. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  6390.     AX = E10Eh
  6391.     ES:BX -> start of 2nd processor's execution
  6392. Return: AL = status
  6393.         0Fh successful (halted)
  6394.         00h failure (not halted)
  6395. SeeAlso: AX=E00Fh,AX=E200h
  6396. --------b-15E200-----------------------------
  6397. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  6398.     AX = E200h
  6399. Return: AX bit 15 set if 2nd processor available
  6400. SeeAlso: AX=E00Fh,AX=E10Eh
  6401. --------b-15E4-------------------------------
  6402. INT 15 - Tandy??? - ???
  6403.     AH = E4h
  6404.     AL = subfunction
  6405.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  6406.     DL = ???
  6407. Return: DL = 00h if successful???
  6408. Note:    the section of code in 386MAX which calls these functions also checks
  6409.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  6410.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  6411.       support this function, however, returning the usual CF set/AH=86h for
  6412.       "unsupported function".
  6413. --------b-15E4-------------------------------
  6414. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  6415.     AH = E4h
  6416.     AL = subfunction
  6417.         00h get ???
  6418.         Return: CF clear
  6419.             AH = 00h
  6420.             CX = 0000h
  6421.             BX = ??? (read from [XBDA:0094h])
  6422.         01h,02h unsupported by this ROM version
  6423.         Return: CF set, AH = 86h
  6424.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  6425.         Return: CF clear
  6426.             AH = 00h
  6427.             CX = 0000h
  6428.             BX = ???
  6429.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  6430.         Return: CF set, AH = 86h
  6431. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  6432.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  6433. --------b-15E800-----------------------------
  6434. INT 15 - Compaq Contura - GET ???
  6435.     AX = E800h
  6436. Return: AX = 0000h
  6437.     BH = 00h
  6438.     BL = ??? (read from port 0C7Ch)
  6439.     CH = ???
  6440.     CL = ???
  6441.     DX = 0000h
  6442. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  6443. --------b-15E800-----------------------------
  6444. INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
  6445.     AX = E800h
  6446.     BX = ??? (0000h)
  6447. Return: CF clear if successful
  6448.         BH = 02h
  6449.         BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
  6450.     CF set on error
  6451.     others???
  6452. Notes:    used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
  6453.       the Enhanced Parallel Port expected by that driver is available
  6454.     used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
  6455.       volume control hardware expected by that driver is available
  6456. --------b-15E800-----------------------------
  6457. INT 15 - Compaq Prolinea - GET ???
  6458.     AX = E800h
  6459.     BX = ??? (1369h)
  6460. Return: BH = 01h
  6461.     BL = ???
  6462.     others???
  6463. Note:    used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
  6464.       the fix that driver applies is required (will not install if BX on
  6465.       return is other than 010Eh or 010Fh)
  6466. SeeAlso: AX=E802h
  6467. --------b-15E801-----------------------------
  6468. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
  6469.     AX = E801h
  6470. Return: CF clear if successful
  6471.         AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  6472.         BX = extended memory above 16M, in 64K blocks
  6473.         CX = configured memory 1M to 16M, in K
  6474.         DX = configured memory above 16M, in 64K blocks
  6475.     CF set on error
  6476. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
  6477.       as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
  6478.       BIOS
  6479.     supported by AMI BIOSes dated 8/23/94 or later
  6480. SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h"Phoenix",AX=E881h"Phoenix"
  6481. --------b-15E802-----------------------------
  6482. INT 15 - Compaq Contura - GET ???
  6483.     AX = E802h
  6484. Return: CF clear
  6485.     AX = 0000h
  6486.     BX = ???
  6487.     CX = 0000h
  6488. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  6489.       supported by LTE Lite 20 and 25.
  6490. SeeAlso: AX=E801h"Phoenix"
  6491. --------b-15E820-----------------------------
  6492. INT 15 - Phoenix BIOS v4.0 - GET SYSTEM MEMORY MAP
  6493.     AX = E820h
  6494.     EDX = 534D4150h ('SMAP')
  6495.     EBX = continuation value or 00000000h to start at beginning of map
  6496.     ECX = number of bytes to copy ( >= 20 bytes)
  6497.     ES:DI -> buffer for result (see #0480)
  6498. Return: CF clear if successful
  6499.         EAX = 534D4150h ('SMAP')
  6500.         ES:DI buffer filled
  6501.         EBX = next offset from which to copy or 00000000h if all done
  6502.         ECX = actual length returned in bytes
  6503.     CF set on error
  6504.         AH = error code (86h) (see #0400 at INT 15/AH=80h)
  6505. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes
  6506.     supported by AMI BIOSes dated 8/23/94 or later
  6507.     a maximum of 20 bytes will be transferred at one time, even if ECX is
  6508.       higher
  6509.     if this function is not supported, an application should fall back
  6510.       to AX=E802h, AX=E801h, and then AH=88h
  6511.     this function will return base memory and ISA/PCI memory contiguous
  6512.       with base memory as normal memory ranges; it will indicate
  6513.       chipset-defined address holes which are not in use and motherboard
  6514.       memory-mapped devices, and all occurrences of the system BIOS as
  6515.       reserved; standard PC address ranges will not be reported
  6516. SeeAlso: AX=E801h"Phoenix",AX=E881h
  6517.  
  6518. Format of Phoenix BIOS system memory map address range descriptor:
  6519. Offset    Size    Description    (Table 0480)
  6520.  00h    QWORD    base address
  6521.  08h    QWORD    length in bytes
  6522.  10h    DWORD    type of address range
  6523.         01h memory, available to OS
  6524.         02h reserved, not available (e.g. system ROM, memory-mapped
  6525.           device)
  6526.         other: not defined
  6527. --------b-15E881-----------------------------
  6528. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
  6529.     AX = E881h
  6530. Return: CF clear if successful
  6531.         EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  6532.         EBX = extended memory above 16M, in 64K blocks
  6533.         ECX = configured memory 1M to 16M, in K
  6534.         EDX = configured memory above 16M, in 64K blocks
  6535.     CF set on error
  6536. Note:    supported by AMI BIOSes dated 8/23/94 or later
  6537. SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
  6538. --------m-15F200CX454D-----------------------
  6539. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
  6540.     AX = F200h
  6541.     CX = 454Dh
  6542. Return: CF clear if hardware already initialised
  6543.         BX = upper RAM areas in use
  6544.         bit 0: C000-C3FF
  6545.         bit 1: C400-C7FF
  6546.         ...
  6547.         bit 11: EC00-EFFF
  6548.     CF set if hardware not initialised yet
  6549. --------B-1600-------------------------------
  6550. INT 16 - KEYBOARD - GET KEYSTROKE
  6551.     AH = 00h
  6552. Return: AH = BIOS scan code
  6553.     AL = ASCII character
  6554. Notes:    on extended keyboards, this function discards any extended keystrokes,
  6555.       returning only when a non-extended keystroke is available
  6556.     the BIOS scan code is usually, but not always, the same as the hardware
  6557.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  6558.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  6559.       differs for shifted special keys
  6560.     some (older) clone BIOSes do not discard extended keystrokes and manage
  6561.       function AH=00h and AH=10h the same
  6562.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  6563.       keystrokes (same as with functions 10h and 20h), but will always
  6564.       translate prefix E0h to 00h. This allows old programs to use extended
  6565.       keystrokes and should not cause compatibility problems
  6566. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
  6567. --------B-1601-------------------------------
  6568. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  6569.     AH = 01h
  6570. Return: ZF set if no keystroke available
  6571.     ZF clear if keystroke available
  6572.         AH = BIOS scan code
  6573.         AL = ASCII character
  6574. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  6575.       however, any extended keystrokes which are not compatible with 83/84-
  6576.       key keyboards are removed by IBM and most fully-compatible BIOSes in
  6577.       the process of checking whether a non-extended keystroke is available
  6578.     some (older) clone BIOSes do not discard extended keystrokes and manage
  6579.       function AH=00h and AH=10h the same
  6580.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  6581.       keystrokes (same as with functions 10h and 20h), but will always
  6582.       translate prefix E0h to 00h. This allows old programs to use extended
  6583.       keystrokes and should not cause compatibility problems
  6584. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  6585. --------B-1602-------------------------------
  6586. INT 16 - KEYBOARD - GET SHIFT FLAGS
  6587.     AH = 02h
  6588. Return: AL = shift flags (see #0481)
  6589.     AH destroyed by many BIOSes
  6590. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  6591.  
  6592. Bitfields for keyboard shift flags:
  6593. Bit(s)    Description    (Table 0481)
  6594.  7    Insert active
  6595.  6    CapsLock active
  6596.  5    NumLock active
  6597.  4    ScrollLock active
  6598.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  6599.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  6600.  1    left shift key pressed
  6601.  0    right shift key pressed
  6602. SeeAlso: #0486,#2992,MEM 0040h:0017h
  6603. --------B-1603-------------------------------
  6604. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  6605.     AH = 03h
  6606.     AL = subfunction
  6607.         00h set default delay and rate (PCjr and some PS/2)
  6608.         01h increase delay before repeat (PCjr)
  6609.         02h decrease repeat rate by factor of 2 (PCjr)
  6610.         03h increase delay and decrease repeat rate (PCjr)
  6611.         04h turn off typematic repeat (PCjr and some PS/2)
  6612.         05h set repeat rate and delay (AT,PS)
  6613.         BH = delay value (00h = 250ms to 03h = 1000ms)
  6614.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  6615.         06h get current typematic rate and delay (newer PS/2s)
  6616.         Return: BL = repeat rate (above)
  6617.             BH = delay (above)
  6618. Return: AH destroyed by many BIOSes
  6619. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  6620.       supported
  6621. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  6622. --------B-1604-------------------------------
  6623. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  6624.     AH = 04h
  6625.     AL = keyclick state
  6626.         00h off
  6627.         01h on
  6628. Return: AH destroyed by many BIOSes
  6629. SeeAlso: AH=03h,AH=04h"K3PLUS"
  6630. --------b-1604-------------------------------
  6631. INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
  6632.     AH = 04h
  6633. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  6634. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
  6635. SeeAlso: INT 51"Tandy 2000"
  6636. --------K-1604-------------------------------
  6637. INT 16 - K3PLUS v6.22+ - SET KEYCLICK
  6638.     AH = 04h
  6639.     AL = keyclick state
  6640.         00h keyclick off, leave loudness setting unchanged
  6641.         01h keyclick on, leave loudness setting unchanged
  6642.         else
  6643.            bit 0: keyclick enabled if set
  6644.            bits 7-1: new keyclick loudness (non-zero)
  6645. Return: AH destroyed by many BIOSes
  6646. Note:    Applications which try to set a new loudness, but are unsure of the
  6647.       results of other INT 16/AH=04h implementations, should set the new
  6648.       loudness first, and then call this function again with AL=01h or
  6649.       AL=00h
  6650. SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
  6651. --------B-1605-------------------------------
  6652. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  6653.     AH = 05h
  6654.     CH = BIOS scan code
  6655.     CL = ASCII character
  6656. Return: AL = status
  6657.         00h if successful
  6658.         01h if keyboard buffer full
  6659.     AH destroyed by many BIOSes
  6660. Notes:    under DESQview, a number of "keystrokes" invoke specific
  6661.       DESQview-related actions when they are read from the keyboard
  6662.       buffer (see #0482)
  6663.     similarly, some "keystrokes" invoke special functions on the HP 100LX
  6664.       and HP 200LX (see #0483)
  6665. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
  6666.  
  6667. (Table 0482)
  6668. Values for pseudo-keystrokes for DESQview:
  6669.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  6670.  38FCh or FC00h    pop up DESQview main menu
  6671.  38FEh or FE00h    close the current window
  6672.  38FFh or FF00h    pop up DESQview learn menu
  6673.  
  6674. (Table 0483)
  6675. Values for pseudo-keystrokes for HP 100LX/200LX:
  6676.  EE00h    pop up topcard display and set other system manager applications
  6677.       into sleep mode
  6678. --------B-1605-------------------------------
  6679. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  6680.     AH = 05h
  6681.     AL = function
  6682.         01h set keyboard layout to French
  6683.         02h set keyboard layout to German
  6684.         03h set keyboard layout to Italian
  6685.         04h set keyboard layout to Spanish
  6686.         05h set keyboard layout to UK
  6687.         80h check if function supported
  6688.         Return: AL <> 80h if supported
  6689. Return: ???
  6690.     AH destroyed by many BIOSes
  6691. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  6692. SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
  6693. --------b-1605-------------------------------
  6694. INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
  6695.     AH = 05h
  6696. Desc:    reset the keyboard and flush the keyboard buffer
  6697. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  6698. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
  6699. --------B-1609-------------------------------
  6700. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  6701.     AH = 09h
  6702. Return: AL = supported keyboard functions (see #0484)
  6703.     AH destroyed by many BIOSes
  6704. Notes:    this function is only available if bit 6 of the second feature byte
  6705.       returned by INT 15/AH=C0h is set (see #0411)
  6706.     reportedly, the Award Modular BIOS v4.50G returns the keyboard function
  6707.       flags in AH instead of AL, and provides this function even though
  6708.       its availability is not indicated by INT 15/AH=C0h
  6709. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  6710.  
  6711. Bitfields for supported keyboard functions:
  6712. Bit(s)    Description    (Table 0484)
  6713.  7    reserved
  6714.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  6715.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  6716.  4    INT 16/AH=0Ah supported
  6717.  3    INT 16/AX=0306h supported
  6718.  2    INT 16/AX=0305h supported
  6719.  1    INT 16/AX=0304h supported
  6720.  0    INT 16/AX=0300h supported
  6721. SeeAlso: #0413
  6722. --------B-160A-------------------------------
  6723. INT 16 - KEYBOARD - GET KEYBOARD ID
  6724.     AH = 0Ah
  6725. Return: BX = keyboard ID (see #0485)
  6726.     AH destroyed by many BIOSes
  6727. Notes:    check return value from AH=09h to determine whether this function is
  6728.       supported
  6729.     this function is also supported by the K3PLUS v6.00+ INT 16 BIOS
  6730.       replacement
  6731. SeeAlso: AH=09h,AX=AF4Dh
  6732.  
  6733. (Table 0485)
  6734. Values for keyboard ID:
  6735.  0000h    no keyboard attached
  6736.  41ABh    Japanese "G" keyboard (translate mode)
  6737.     MF2 Keyboard (usually in translate mode)
  6738.  54ABh    Japanese "P" keyboard (translate mode)
  6739.  83ABh    Japanese "G" keyboard (pass-through mode)
  6740.     MF2 Keyboard (pass-through mode)
  6741.  84ABh    Japanese "P" keyboard (pass-through mode)
  6742.  90ABh    old Japanese "G" keyboard
  6743.  91ABh    old Japanese "P" keyboard
  6744.  92ABh    old Japanese "A" keyboard
  6745. --------B-1610-------------------------------
  6746. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  6747.     AH = 10h
  6748. Return: AH = BIOS scan code
  6749.     AL = ASCII character
  6750. Notes:    if no keystroke is available, this function waits until one is placed
  6751.       in the keyboard buffer
  6752.     the BIOS scan code is usually, but not always, the same as the hardware
  6753.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  6754.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  6755.       differs for shifted special keys.
  6756.     unlike AH=00h, this function does not discard extended keystrokes
  6757.     INT 16/AH=09h can be used to determine whether this function is
  6758.       supported, but only on later model PS/2s
  6759. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  6760. --------B-1611-------------------------------
  6761. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  6762.     AH = 11h
  6763. Return: ZF set if no keystroke available
  6764.     ZF clear if keystroke available
  6765.         AH = BIOS scan code
  6766.         AL = ASCII character
  6767. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  6768.     unlike AH=01h, this function does not discard extended keystrokes
  6769.     some versions of the IBM BIOS Technical Reference erroneously report
  6770.       that CF is returned instead of ZF
  6771.     INT 16/AH=09h can be used to determine whether this function is
  6772.       supported, but only on later model PS/2s
  6773. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  6774. --------B-1612-------------------------------
  6775. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  6776.     AH = 12h
  6777. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0486)
  6778.     AH = shift flags 2 (see #0487)
  6779. Notes:    AL bit 3 set only for left Alt key on many machines
  6780.     AH bits 7 through 4 always clear on a Compaq SLT/286
  6781.     INT 16/AH=09h can be used to determine whether this function is
  6782.       supported, but only on later model PS/2s
  6783.     many BIOSes (including at least some versions of Phoenix and AMI) will
  6784.       destroy AH on return from functions higher than AH=12h, returning
  6785.       12h less than was in AH on entry (due to a chain of DEC/JZ
  6786.       instructions)
  6787. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  6788.  
  6789. Bitfields for keyboard shift flags 1:
  6790. Bit(s)    Description    (Table 0486)
  6791.  7    Insert active
  6792.  6    CapsLock active
  6793.  5    NumLock active
  6794.  4    ScrollLock active
  6795.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  6796.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  6797.  1    left shift key pressed
  6798.  0    right shift key pressed
  6799. SeeAlso: #0481,#0487,MEM 0040h:0017h,#M009
  6800.  
  6801. Bitfields for keyboard shift flags 2:
  6802. Bit(s)    Description    (Table 0487)
  6803.  7    SysReq key pressed (SysReq is often labeled SysRq)
  6804.  6    CapsLock pressed
  6805.  5    NumLock pressed
  6806.  4    ScrollLock pressed
  6807.  3    right Alt key pressed
  6808.  2    right Ctrl key pressed
  6809.  1    left Alt key pressed
  6810.  0    left Ctrl key pressed
  6811. SeeAlso: #0486,MEM 0040h:0018h,#M010
  6812. --------J-1613-------------------------------
  6813. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  6814.     AH = 13h
  6815.     AL = function
  6816.         00h set shift status
  6817.         DX = shift status (see #0488), must preserve internal status
  6818.               bits
  6819.         01h get shift status
  6820.         Return: DX = current shift status (see #0488)
  6821. Note:    these functions are supplied by the Japanese Front-End Processor
  6822. SeeAlso: AH=14h,INT 21/AX=6301h
  6823.  
  6824. Bitfields for DOS/V shift status:
  6825. Bit(s)    Description    (Table 0488)
  6826.  0    full-size rather than half-size
  6827.  2-1    character input mode
  6828.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  6829.  5-3    internal status
  6830.  6    Romaji enabled
  6831.  7    Katakana to Kanji conversion enabled
  6832.  15-8    internal status
  6833. --------J-1614-------------------------------
  6834. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  6835.     AH = 14h
  6836.     AL = function
  6837.         00h enable display
  6838.         01h disable display
  6839.         02h get display state
  6840.         Return: AL = current state (00h enabled, 01h disabled)
  6841. Desc:    control the screen-bottom shift status row(s) for the Japanese
  6842.       Front-End Processor
  6843. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  6844. --------B-1620-------------------------------
  6845. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  6846.     AH = 20h
  6847. Return: AH = BIOS scan code (see AH=10h)
  6848.     AL = ASCII character
  6849. Note:    use AH=09h to determine whether this function is supported
  6850. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  6851. --------b-1620------------------------------------
  6852. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  6853.     AH = 20h
  6854.     AL = shift status (see #0489)
  6855. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  6856.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  6857.     the user can override the specified settings by pressing the keys
  6858.  
  6859. Bitfields for HUNTER 16 shift status:
  6860. Bit(s)    Description    (Table 0489)
  6861.  4    Scroll Lock on
  6862.  5    Num Lock on
  6863.  6    Caps Lock on
  6864. --------K-1620-------------------------------
  6865. INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE
  6866.     AH = 20h
  6867. Return: AX = K3 version
  6868.     ES:BX -> extended keyboard buffer start
  6869.     ES:DX -> extended keyboard buffer end
  6870.     ES:SI -> next keystroke
  6871.     ES:DI -> last keystroke in buffer
  6872.     CX = number of keystrokes in buffer
  6873. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  6874.       Frinke, originally based on the K3 extended German keyboard driver
  6875.       by Martin Gerdes published in c't magazine in 1988
  6876. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  6877.       is no longer supported by v6.30+; use AX=AF20h instead
  6878. SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
  6879. --------B-1621-------------------------------
  6880. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  6881.     AH = 21h
  6882. Return: ZF set if no keystroke available
  6883.     ZF clear if keystroke available
  6884.         AH = BIOS scan code
  6885.         AL = ASCII character
  6886. Notes:    use AH=09h to determine whether this function is supported
  6887.     some versions of the IBM BIOS Technical Reference erroneously report
  6888.       that CF is returned instead of ZF
  6889.     K3PLUS v6.00+ supports this function as an alias of AH=11h
  6890. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  6891. --------b-1621------------------------------------
  6892. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  6893.     AH = 21h
  6894.     AL = shift keys to control (see #0481)
  6895.     BL = shift state for disabled keys
  6896. Note:    If a bit in AL is set the key is disabled and set to the state of the
  6897.       corresponding bit in BL
  6898. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  6899. --------B-1622-------------------------------
  6900. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  6901.     AH = 22h
  6902. Return: AL = shift flags 1 (see #0486)
  6903.     AH = shift flags 2 (see #0487)
  6904. Notes:    use AH=09h to determine whether this function is supported
  6905.     K3PLUS v6.00+ supports this function as an alias of AH=12h
  6906. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  6907. --------b-1622------------------------------------
  6908. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  6909.     AH = 22h
  6910.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  6911.     BX = 0708h
  6912.     CX = 0910h
  6913.     DX = 1112h
  6914. Return: AL = 00h if successful
  6915. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  6916. --------b-1623------------------------------------
  6917. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  6918.     AH = 23h
  6919.     AL = new state of breakout (00h enabled, nonzero disabled)
  6920.     BX = 0708h
  6921.     CX = 0910h
  6922.     DX = 1112h
  6923. Return: AL = 00h if successful
  6924. Desc:    Enables or disables the emergency breakout feature, where the
  6925.       Hunter 16 at power on checks whether the X and P keys are pressed.
  6926.       If so the machine will boot rather than continue the running program
  6927. SeeAlso: AH=22h"HUNTER"
  6928. --------b-1624------------------------------------
  6929. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  6930.     AH = 24h
  6931.     AL = Matrix Code (see #0490)
  6932.     BL = new Key code
  6933. Return: AL = status (00h successful, nonzero failed)
  6934. SeeAlso: AH=2Bh,AH=2Ch
  6935.  
  6936. (Table 0490)
  6937. Values for HUNTER 16 Matrix Code:
  6938.  Code  Key        Code    Key        Code    Key
  6939.  00h   Esc key        1Eh    Space        3Bh    L
  6940.  01h   1        21h    0        3Ch    ,
  6941.  02h   Q        22h    -        3Eh    Right shift
  6942.  03h   Tab        23h    '        42h    8
  6943.  04h   Num Lock        24h    Keypad 4    43h    7
  6944.  05h   \        25h    Enter        44h    U
  6945.  08h   LShift        26h    Keypad 7    45h    I
  6946.  09h   Ctrl        27h    .        46h    J
  6947.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  6948.  0Bh   2        29h    Keypad 0    48h    M
  6949.  0Ch   W        2Ch    =        49h    N
  6950.  0Dh   A        2Dh    Backspace    4Ah    /
  6951.  0Eh   S        2Eh    Keypad 8    4Dh    6
  6952.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  6953.  11h   Alt        30h    Keypad 5    4Fh    T
  6954.  16h   4        31h    Keypad 6    50h    Y
  6955.  17h   3        32h    Keypad 2    51h    G
  6956.  18h   E        33h    Keypad 3    52h    H
  6957.  19h   R        34h    Keypad .    53h    B
  6958.  1Ah   D        37h    9        54h    V
  6959.  1Bh   F        38h    O        55h    #
  6960.  1Ch   X        39h    P        58h    Pwr
  6961.  1Dh   C        3Ah    ;        59h    Shift Pwr
  6962. --------b-1625------------------------------------
  6963. INT 16 - HUNTER 16 - RESET KEYBOARD
  6964.     AH = 25h
  6965. Return: AL = 00h
  6966. Desc:    restores the standard keyboard layout after any remapping
  6967. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  6968. --------K-1625-------------------------------
  6969. INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER
  6970.     AH = 25h
  6971.     CX = number of keystrokes to copy
  6972.     ES:SI -> buffer containing keystrokes
  6973. Return: CF clear if successful
  6974.     CF set on error (i.e. buffer full)
  6975.         CX = number of keystrokes NOT transferred
  6976.         ES:SI -> first keystroke not transferred
  6977. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  6978.       is no longer supported by v6.30+; use AX=AF25h instead
  6979. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
  6980. --------b-1626------------------------------------
  6981. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  6982.     AH = 26h
  6983.     AL = new state of keyclicks (00h disabled, 01h enabled)
  6984. Return: AL = 00h
  6985. SeeAlso: AH=2Ah
  6986. --------b-1627------------------------------------
  6987. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  6988.     AH = 27h
  6989.     AL = what to dump
  6990.         00h whole (virtual) window
  6991.         01h LCD window only
  6992. Return: AL = 00h
  6993. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  6994.       part displayed in the LCD window
  6995. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  6996.       a 640x200 virtual screen
  6997. --------b-1629------------------------------------
  6998. INT 16 - HUNTER 16 - GET KEY REPEAT
  6999.     AH = 29h
  7000. Return: BL = Typematic rate (characters per second) (see #0491)
  7001.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  7002. SeeAlso: AH=03h,AH=2Ah
  7003.  
  7004. (Table 0491)
  7005. Values for HUNTER 16 Typematic rate:
  7006.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  7007.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  7008.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  7009.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  7010.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  7011.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  7012.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  7013.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  7014. SeeAlso: AH=2Ah
  7015. --------b-162A------------------------------------
  7016. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  7017.     AH = 2Ah
  7018.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  7019. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  7020. --------b-162B------------------------------------
  7021. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  7022.     AH = 2Bh
  7023.     AL = which key table to redefine
  7024.         00h unshifted
  7025.         01h shifted
  7026.         02h Numlock
  7027.     BH = standard scan code of key (00h-80h)
  7028.     BL = new scan code
  7029. Desc:    redefine the generated scan code from BH to BL
  7030. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  7031. --------b-162C------------------------------------
  7032. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  7033.     AH = 2Ch
  7034.     AL = Matrix code of key (see AH=29h)
  7035.     BL = new key code
  7036. Return: AL = status (00h success, nonzero failed)
  7037. Desc:    redefine the key code generated by holding the PAW key down and
  7038.       pressing the key in AL
  7039. SeeAlso: AH=24h,AH=2Bh
  7040. --------b-162D------------------------------------
  7041. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  7042.     AH = 2Dh
  7043.     AL = enabled break keys
  7044.         bit 0 Ctrl-C
  7045.         bit 1 Ctrl-Break
  7046.     BX = 0708h
  7047.     CX = 0910h
  7048.     DX = 1112h
  7049. Return: AL = status (00h success, FFh failed)
  7050. SeeAlso: AH=21h"HUNTER"
  7051. --------U-163577-----------------------------
  7052. INT 16 U - TextWare TWTSR - API
  7053.     AX = 3577h
  7054.     CX = function
  7055.         00CBh ???
  7056.         Return: AX = 0000h
  7057.             BX = 0000h
  7058.             DX:CX -> ???
  7059.         00CCh uninstall
  7060.         Return: AX = status
  7061.                 0000h successful
  7062.                 FFFDh unable to unload because vectors taken
  7063.         00CDh ???
  7064.         Return: AX = 0000h
  7065.             BX = 0000h
  7066.             DX:CX -> ???
  7067.         other
  7068.         Return: AX = 5345h ('SE')
  7069. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  7070.       popped up via hotkey
  7071. SeeAlso: AX=D724h
  7072. --------U-164252-----------------------------
  7073. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  7074.     AX = 4252h
  7075. Return: AX = 5242h if installed
  7076. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of
  7077.       the PC Magazine utility CAPTURE written by Tom Kihlken
  7078. SeeAlso: AX=4253h,AX=4254h
  7079. --------U-164253-----------------------------
  7080. INT 16 - TEXTCAP 2.0 - UNINSTALL
  7081.     AX = 4253h
  7082. Return: AX = segment of resident code
  7083. Notes:    the uninstall code does not check whether interrupt vectors have been
  7084.       chained by other programs
  7085.     the caller must free the main memory block (using the returned segment)
  7086. SeeAlso: AX=4252h,AX=4254h
  7087. --------U-164254-----------------------------
  7088. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  7089.     AX = 4254h
  7090. Return: AX = status
  7091.         4254h if screen dump will be written as soon as disk becomes idle
  7092.         5442h if screen dump written
  7093. SeeAlso: AX=4252h,AX=4253h
  7094. --------e-164500-----------------------------
  7095. INT 16 - Shamrock Software EMAIL - GET STATUS
  7096.     AX = 4500h
  7097.     DL = port number (01h = COM1)
  7098.     ES:BX -> 13-byte buffer for ASCIZ name
  7099. Return: AX = 4D00h if EMAIL installed on specified port
  7100.         ES:BX -> "" if no connection
  7101.           -> "*" if connection but caller has not identified name
  7102.           -> name otherwise
  7103.         CX = version (CH = major, CL = minor)
  7104.         DL = privilege level of user (00h = guest)
  7105.         DH = chosen language (00h German, 01h English)
  7106. SeeAlso: AX=4501h,AX=4502h
  7107. --------e-164501-----------------------------
  7108. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  7109.     AX = 4501h
  7110.     DL = port number (01h = COM1)
  7111. Return: AX = 4D00h if EMAIL installed on specified port
  7112.         BX = maximum connect time in clock ticks
  7113.         CX = maximum connect time for guests (without name) in clock ticks
  7114.         DX = elapsed connect time of current user in clock ticks
  7115. SeeAlso: AX=4500h
  7116. --------e-164502-----------------------------
  7117. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  7118.     AX = 4502h
  7119.     DL = port number (01h = COM1)
  7120. Return: AX = 4D00h if EMAIL installed on specified port
  7121.         BL = current value of serial port's Line Control Register
  7122.         BH = flags (see #0492)
  7123.         CX = selected country code (33 = France, 49 = Germany, etc)
  7124.         DX = baudrate divisor (115200/DX = baudrate)
  7125. SeeAlso: AX=4500h
  7126.  
  7127. Bitfields for Shamrock Software EMAIL flags:
  7128. Bit(s)    Description    (Table 0492)
  7129.  0    ISO code
  7130.  1    pause
  7131.  2    linefeed
  7132.  3    ANSI sequences
  7133. --------e-164503-----------------------------
  7134. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  7135.     AX = 4503h
  7136.     DL = port number (01h = COM1)
  7137.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  7138.     ES:BX -> ASCIZ string with new user command-word
  7139. Return: AX = 4D00h if EMAIL installed on specified port
  7140. Notes:    a single user command (consisting of only uppercase letters and digits)
  7141.       may be defined, and remains valid until it is overwritten or the
  7142.       EMAIL program terminates; the user command must be activated by
  7143.       calling AX=4504h at least once.
  7144.     an existing command word may be redefined with this function
  7145. SeeAlso: AX=4504h,AX=4505h
  7146. --------e-164504-----------------------------
  7147. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  7148.     AX = 4504h
  7149.     DL = port number (01h = COM1)
  7150.     ES:BX -> 80-byte buffer for ASCIZ user input line
  7151. Return: AX = 4D00h if EMAIL installed on specified port
  7152.         DL = flags
  7153.         bit 0: user function supported (always set)
  7154.         bit 1: user entered user-function command word
  7155.         if DL bit 1 set,
  7156.         ES:BX buffer contains line entered by user which begins with
  7157.             the defined command word and has been converted to all
  7158.             caps
  7159. Note:    caller must process the returned commandline and invoke AX=4505h
  7160.       within five seconds with the result of that processing
  7161. SeeAlso: AX=4503h,AX=4505h
  7162. --------e-164505-----------------------------
  7163. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  7164.     AX = 4505h
  7165.     DL = port number (01h = COM1)
  7166.     DH = error flag
  7167.         bit 3: set on error
  7168.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  7169. Return: AH = 4Dh if EMAIL installed on specified port
  7170.     AL = status
  7171.         00h successful
  7172.         02h unable to perform function (timeout, prev call not complete)
  7173.         other error
  7174. Notes:    if the error flag in DH is set, the string is not sent and an error
  7175.       message is generated instead; if this function is not called within
  7176.       five seconds of AX=4504h, EMAIL automatically generates an error
  7177.       message
  7178.     the string is copied into an internal buffer, allowing this function's
  7179.       caller to continue immediately
  7180. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  7181. --------e-164506-----------------------------
  7182. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  7183.     AX = 4506h
  7184.     DL = port number (01h = COM1)
  7185.     ES:BX -> 13-byte buffer for ASCIZ filename
  7186. Return: AX = 4D00h if EMAIL installed on specified port
  7187.         DH = Xmodem status
  7188.         00h no XGET command given
  7189.         01h XGET in progress
  7190.         02h XGET completed successfully
  7191.         ES:BX buffer filled with last filename given to XGET command
  7192.         (without path)
  7193. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  7194.       return DH=00h
  7195. SeeAlso: AX=4500h,INT 17/AX=2408h
  7196. --------K-164D4F-----------------------------
  7197. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  7198.     AX = 4D4Fh
  7199. Return: AX = 6F6Dh if installed
  7200.         ES = segment of resident code
  7201. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  7202. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  7203. --------J-165000-----------------------------
  7204. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  7205.     AX = 5000h
  7206.     BX = country code
  7207.         0001h USA (English), 0051h Japan
  7208. Return: AL = status
  7209.         00h successful
  7210.         01h bad country code
  7211.         02h other error
  7212. Notes:    the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the
  7213.       supported country specific layout (e.g. BX=0031h Germany, BX=001Fh
  7214.       Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with <Ctrl>+
  7215.       <Alt>+<F2>) and K3PLUS' transparent mode (as with <Ctrl>+<Alt>+<F1>).
  7216.     In transparent mode (BX=0001h), K3PLUS chains to the underlying
  7217.       driver (normally the BIOS driver with US-layout). K3PLUS beeps on
  7218.       mode changes
  7219. SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h
  7220. --------J-165001-----------------------------
  7221. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  7222.     AX = 5001h
  7223. Return: AL = status
  7224.         00h successful
  7225.         BX = country code
  7226.         02h error
  7227. Note:    also supported by K3PLUS v6.00+
  7228. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  7229. --------J-1651-------------------------------
  7230. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  7231.     AH = 51h
  7232. Return: AL = standard shift key states (see #0481,#0486)
  7233.     AH = Kana lock (00h off, 01h on)
  7234. Note:    also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h
  7235. SeeAlso: AH=02h,AH=12h,AH=22h
  7236. --------t-165453BX5242-----------------------
  7237. INT 16 - TSRBONES - INSTALLATION CHECK
  7238.     AX = 5453h ('TS')
  7239.     BX = 5242h ('RB')
  7240.     CX = 4F4Eh ('ON')
  7241.     DX = 4553h ('ES')
  7242. Return: AX = 4553h if installed
  7243.     BX = 4F4Eh if installed
  7244.     CX = 5242h if installed
  7245.     DX = 5453h if installed
  7246. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  7247. Note:    these values are the default as the TSRBONES package is distributed,
  7248.       but will normally be changed when implementing an actual TSR with
  7249.       the TSRBONES skeleton
  7250. SeeAlso: INT 2D"AMIS"
  7251. --------A-165500-----------------------------
  7252. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  7253.     AX = 5500h
  7254. Return: AX = 4D53h ('MS') if keyboard TSR present
  7255. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  7256.       that are present through this call.
  7257.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  7258.       handlers; otherwise it assumes that the TSR will handle the keyboard
  7259. SeeAlso: AX=55FFh,INT 1A/AX=3601h
  7260. --------A-1655FE-----------------------------
  7261. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
  7262.     AX = 55FEh
  7263.     DX = function
  7264.         0000h initialize
  7265.         ES:BX -> ??? function
  7266.         ES:CX -> ??? structure
  7267.         FFFFh shutdown/reset
  7268. Return: AX = result
  7269.         4D4Bh only the INT 1B handler will be installed.
  7270.         other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
  7271.           are installed
  7272. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  7273.       function when new keyboard keys are pressed. If a TSR returns
  7274.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  7275.     these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
  7276.       and before/after shelling out
  7277.     since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
  7278.       will also cause this interface to be invoked
  7279.     K3PLUS v6.07+ supports this function, but will never invoke the
  7280.       callback function
  7281. SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h
  7282. --------U-1655FF-----------------------------
  7283. INT 16 C - Microsoft Word - TSR COOPERATION???
  7284.     AX = 55FFh
  7285.     BX >= 0004h (version of Microsoft Word [BL = major] ???)
  7286.     CX = function
  7287.         0000h set ??? flag
  7288.         other clear ??? flag
  7289. Notes:    hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
  7290.       distributed with PC Tools v7, as well as the Trusted Access
  7291.       SCRNBLNK.COM; this may be part of the standard TesSeRact library
  7292.     known to be called by the German edition of Microsoft Word 5.0
  7293. SeeAlso: AX=5500h,INT 2F/AX=5453h
  7294. --------c-165758BX4858-----------------------
  7295. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  7296.     AX = 5758h
  7297.     BX = 4858h ('HX')
  7298.     DX = 4443h ('DC')
  7299.     CX <> 5758h
  7300. Return: BX = 6878h if installed
  7301.     CX = 6463h if installed
  7302.         AX = code segment of TSR
  7303.         CX = internal version??? (v3.00 returns 0100h)
  7304. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  7305. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  7306.     the cache statistics are located early in the segment pointed at by
  7307.       AX on return
  7308. SeeAlso: INT 2F/AX=5758h
  7309. --------m-165758BX5754-----------------------
  7310. INT 16 U - Netroom ??? - ???
  7311.     AX = 5758h
  7312.     BX = 5754h
  7313.     ???
  7314. Return: ???
  7315. --------m-165758BX5755-----------------------
  7316. INT 16 U - Netroom ??? - ???
  7317.     AX = 5758h
  7318.     BX = 5755h
  7319.     DS:SI -> ???
  7320. Return: ???
  7321. --------m-165758BX5756-----------------------
  7322. INT 16 U - Netroom ??? - INSTALLATION CHECK
  7323.     AX = 5758h
  7324.     BX = 5756h
  7325. Return: BX <> 5756h if installed
  7326. --------m-165758BX5858-----------------------
  7327. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  7328.     AX = 5758h
  7329.     BX = 5858h
  7330. Return: CF clear
  7331.     DX:BX -> saved copy of interrupt vector table
  7332. Note:    the installation check consists of calling this function and comparing
  7333.       BX against 5858h on return; if it has changed, PRENET is installed
  7334. SeeAlso: AX=5758h/BX=5859h
  7335. Index:    installation check;Netroom PRENET
  7336. --------m-165758BX5859-----------------------
  7337. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  7338.     AX = 5758h
  7339.     BX = 5859h
  7340. Return: CF clear
  7341.     DX:BX -> saved copy of interrupt vector table
  7342. Note:    the installation check consists of calling this function and comparing
  7343.       BX against 5859h on return; if it has changed, POSTNET is installed
  7344. SeeAlso: AX=5758h/BX=5858h
  7345. Index:    installation check;Netroom POSTNET
  7346. --------U-166969BX6968-----------------------
  7347. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  7348.     AX = 6969h
  7349.     BX = 6968h
  7350. Return: resident code unhooked, but not removed from memory
  7351. Index:    uninstall;BACKTALK
  7352. --------U-166969BX6969-----------------------
  7353. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  7354.     AX = 6969h
  7355.     BX = 6969h
  7356.     DX = 0000h
  7357. Return: DX nonzero if installed
  7358.         BX = CS of resident code
  7359.         DX = PSP segment of resident code
  7360.         DS:SI -> ASCIZ identification string "CPoint Talk"
  7361. --------i-166A6B-----------------------------
  7362. INT 16 U - FastJuice - DISABLE/UNLOAD???
  7363.     AX = 6A6Bh
  7364. Return: ???
  7365. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  7366. SeeAlso: AX=7463h
  7367. Index:    uninstall;FastJuice
  7368. --------G-166C63-----------------------------
  7369. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  7370.     AX = 6C63h ('lc')
  7371. Return: AX = 4C43h ('LC') if installed
  7372. Program: TMED is a freeware resident memory editor by Liang Chen
  7373. --------b-166F00-----------------------------
  7374. INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK
  7375.     AX = 6F00h
  7376.     BX <> 4850h (usually set to 0000h for simplicity)
  7377. Return: BX = 4850h ("HP") if present
  7378. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  7379.     supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7380. SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h
  7381. SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
  7382. SeeAlso: INT 6F/AH=00h"HP Vectra"
  7383. --------b-166F01-----------------------------
  7384. INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES
  7385.     AX = 6F01h
  7386. Return: AH = 00h (successful)
  7387.     CX = 0004h (size of returned buffer)
  7388.     ES:SI -> buffer for typematic info (see #0493)
  7389. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7390. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  7391.  
  7392. Format of HP Vectra EX-BIOS typematic info:
  7393. Offset    Size    Description    (Table 0493)
  7394.  00h    BYTE    delay before repeat for all non-Cursor Control Pad keys
  7395.         (see #0494)
  7396.  01h    BYTE    typematic rate for all non-Cursor Control Pad keys (see #0495)
  7397.  02h    BYTE    delay before repeat for Cursor Control Pad keys    (see #0496)
  7398.  03h    BYTE    typematic rate for Cursor Control Pad keys (see #0495)
  7399.  
  7400. (Table 0494)
  7401. Values for HP Vectra EX-BIOS non-CCP delay time:
  7402.  00h    17 ms
  7403.  01h    150 ms
  7404.  02h    283 ms
  7405.  03h    417 ms
  7406.  04h    550 ms
  7407.  05h    683 ms
  7408.  06h    817 ms
  7409.  07h    950 ms
  7410.  08h    1083 ms
  7411.  09h    1217 ms
  7412.  0Ah    1350 ms
  7413.  0Bh    1483 ms
  7414.  0Ch    1617 ms
  7415.  0Dh    1750 ms
  7416.  0Eh    1883 ms
  7417.  0Fh    2017 ms
  7418. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  7419.       double the times if set to 30 Hz
  7420. SeeAlso: #0493,#0495,#0496
  7421.  
  7422. (Table 0495)
  7423. Values for HP Vectra EX-BIOS typematic rate:
  7424.  00h    60 / sec
  7425.  01h    30 / sec
  7426.  02h    20
  7427.  03h    15
  7428.  04h    12
  7429.  05h    10
  7430.  06h    8.57
  7431.  07h    7.5
  7432.  08h    6.66
  7433.  09h    6 / sec
  7434.  0Ah    5.45
  7435.  0Bh    5
  7436.  0Ch    4.62
  7437.  0Dh    4.28
  7438.  0Eh    4 / sec
  7439.  0Fh    typematic disabled
  7440. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  7441.       halve the rates if set to 30 Hz
  7442. SeeAlso: #0494,#0496
  7443.  
  7444. (Table 0496)
  7445. Values for HP Vectra EX-BIOS CCP delay time:
  7446.  00h    17 ms
  7447.  01h    83 ms
  7448.  02h    150 ms
  7449.  03h    217 ms
  7450.  04h    283 ms
  7451.  05h    350 ms
  7452.  06h    417 ms
  7453.  07h    483 ms
  7454.  08h    550 ms
  7455.  09h    617 ms
  7456.  0Ah    683 ms
  7457.  0Bh    750 ms
  7458.  0Ch    817 ms
  7459.  0Dh    883 ms
  7460.  0Eh    950 ms
  7461.  0Fh    1017 ms
  7462. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  7463.       double the times if set to 30 Hz
  7464. SeeAlso: #0494,#0495
  7465. --------b-166F02-----------------------------
  7466. INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES
  7467.     AX = 6F02h
  7468. Return: AH = 00h (successful)
  7469.     CX = 0004h (size of returned buffer)
  7470.     ES:SI -> buffer for typematic info (see #0493)
  7471. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7472. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  7473. SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h
  7474. --------b-166F03-----------------------------
  7475. INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES
  7476.     AX = 6F03h
  7477.     ES:SI -> buffer containing typematic info (see #0493)
  7478. Return: AH = 00h (successful)
  7479. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7480. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  7481. SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h
  7482. --------b-166F04-----------------------------
  7483. INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS
  7484.     AX = 6F04h
  7485.     ES:SI -> mapping buffer (see #0497)
  7486. Return: AH = 00h (successful)
  7487.     CX = 001Eh (number of bytes in buffer)
  7488.     ES:SI buffer filled
  7489. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7490.     the HIL input system translates the HIL keyboard events to simulate
  7491.       an IBM-compatible keyboard; the translation can be altered
  7492.       dynamically by applications
  7493. SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h
  7494.  
  7495. Format of HP Vectra EX-BIOS keyboard mapping info:
  7496. Offset    Size    Description    (Table 0497)
  7497.  00h  3 WORDs    entry for V_QWERTY driver (IP, CS, DS)
  7498.  06h  3 WORDs    entry for V_SOFTKEY driver (IP, CS, DS)
  7499.  0Ch  3 WORDs    entry for V_FUNCTION driver
  7500.  12h  3 WORDs    entry for V_NUMPAD driver
  7501.  18h  3 WORDs    entry for V_CCP driver
  7502. --------b-166F05-----------------------------
  7503. INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS
  7504.     AX = 6F05h
  7505.     ES:SI -> mapping buffer (see #0497)
  7506. Return: AH = 00h (successful)
  7507.     CX = 001Eh (number of bytes in buffer)
  7508.     ES:SI buffer filled
  7509. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7510. SeeAlso: AX=6F04h,AX=6F06h
  7511. --------b-166F06-----------------------------
  7512. INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS
  7513.     AX = 6F06h
  7514.     CX = number of bytes in buffer (001Eh)
  7515.     ES:SI -> mapping buffer (see #0497)
  7516. Return: AH = 00h (successful)
  7517. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7518.     any application which modifies the key mappings should restore them
  7519.       before terminating
  7520.     drivers installed with this function are assured of 32 bytes of stack
  7521.       space when they are invoked
  7522. SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h
  7523. --------b-166F07-----------------------------
  7524. INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS
  7525.     AX = 6F07h
  7526.     BL = translation to set (see #0498)
  7527. Return: AH = 00h (successful)
  7528. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7529.     this function may no longer work properly if the application has
  7530.       modified the key mappings with AX=6F06h
  7531. SeeAlso: AX=6F06h,AX=6F09h
  7532.  
  7533. (Table 0498)
  7534. Values for HP Vectra keyboard translation specifier:
  7535.  00h    map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys
  7536.  01h    map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers
  7537.  02h    map V_CCP to V_OFF, disabling the cursor pad
  7538.  03h    map V_CCP to V_CCPGID, converting cursor pad keys to GID data
  7539.  04h    map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09
  7540.  05h    map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys
  7541.  06h    map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09
  7542.  07h    map V_SOFTKEY to V_OFF, disabling HP Softkeys
  7543. SeeAlso: #0499
  7544.  
  7545. (Table 0499)
  7546. Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator:
  7547.           INT 09         INT 16 keycode
  7548.     Key         scan code    Default     Shifted   Ctrl         Alt
  7549.  * (NumPd)    37h    2Ah     (Prt Sc)  00/72h    00/37H
  7550.  Sysreq        54h      --     --       --         --
  7551.  CCP-Up        60h    00/D9h     00/BFh       00/A5h    00/8BH
  7552.  CCP-Left    61h    00/DAh     00/C0h       00/A6h    00/8CH
  7553.  CCP-Down    62h    00/DBh     00/C1h       00/A7h    00/8DH
  7554.  CCP-Right    63h    00/DCh     00/C2h       00/A8h    00/8EH
  7555.  CCP-Home    64h    00/DDh     00/C3h       00/A9h    00/8FH
  7556.  CCP-PgUp    65h    00/DEh     00/C4h       00/AAh    00/90H
  7557.  CCP-End    66h    00/DFh     00/C5h       00/ABh    00/91H
  7558.  CCP-PgDn    67h    00/E0h     00/C6h       00/ACh    00/92H
  7559.  CCP-Ins    68h    00/E1h     00/C7h       00/ADh    00/93H
  7560.  CCP-Del    69h    00/E2h     00/C8h       00/AEh    00/94H
  7561.  CCP-CNTR    6Ah    00/E3h     00/C9h       00/AFh    00/95H
  7562.  f1        70h    00/E9h     00/CFh       00/B5h    00/9BH
  7563.  f2        71h    00/EAh     00/D0h       00/B6h    00/9CH
  7564.  f3        72h    00/EBh     00/D1h       00/B7h    00/9DH
  7565.  f4        73h    00/ECh     00/D2h       00/B8h    00/9EH
  7566.  f5        74h    00/EDh     00/D3h       00/B9h    00/9FH
  7567.  f6        75h    00/EEh     00/D4h       00/BAh    00/A0H
  7568.  f7        76h    00/EFh     00/D5h       00/BBh    00/A1H
  7569.  f8        77h    00/F0h     00/D6h       00/BCh    00/A2H
  7570. Note:    only HP-specific codes are listed in this table; see INT 09 for a full
  7571.       list of standard scan codes
  7572. SeeAlso: #0005,#0498
  7573. --------b-166F08-----------------------------
  7574. INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION
  7575.     AX = 6F08h
  7576. Return: AH = status
  7577.        00h successful
  7578.        02h unsupported (non-HIL, i.e. standard, keyboard)
  7579.     BH = HP-HIL address (HP Vectra AT only???)
  7580.     BL = HP-HIL ID (HP Vectra AT only???)
  7581.     BL = keyboard language (ES/QS/RS only???) (see #0500)
  7582. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7583.     the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may
  7584.       be computed as (BH-1)*6 + N, where N is the address of the first
  7585.       HP-HIL device driver (see INT 6F/AH=0Ah"F_INQUIRE_FIRST")
  7586. SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"F_INQUIRE_FIRST"
  7587.  
  7588. (Table 0500)
  7589. Values for HP HIL keyboard language code:
  7590.  00h    reserved
  7591.  01h    Arabic-French
  7592.  02h    Kanji
  7593.  03h    Swiss-French
  7594.  04h    Portugese
  7595.  05h    Arabic
  7596.  06h    Hebrew
  7597.  07h    Canadian-English
  7598.  08h    Turkish
  7599.  09h    Greek
  7600.  0Ah    Thai
  7601.  0Bh    Italian
  7602.  0Ch    Hangul (Korean)
  7603.  0Dh    Dutch
  7604.  0Eh    Swedish
  7605.  0Fh    German
  7606.  10h    Chinese (PRC)
  7607.  11h    Chinese (Taiwan)
  7608.  12h    Swiss (French ii)
  7609.  13h    Spanish
  7610.  14h    Swiss (German ii)
  7611.  15h    Belgian (Flemish)
  7612.  16h    Finish
  7613.  17h    United Kingdom
  7614.  18h    French-Canadian
  7615.  19h    French-German
  7616.  1Ah    Norwegian
  7617.  1Bh    French
  7618.  1Ch    Danish
  7619.  1Dh    Katakana
  7620.  1Eh    Latin American Spanish
  7621.  1Fh    United States-American
  7622.  20h-FEh reserved
  7623.  FFh    non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard)
  7624. --------b-166F09-----------------------------
  7625. INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS
  7626.     AX = 6F09h
  7627. Return: AH = 00h (successful)
  7628. Desc:    reset all keyboard mappings to their default translators, and reset
  7629.       typematic values to their defaults
  7630. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  7631. SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h
  7632. --------b-166F0A-----------------------------
  7633. INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED
  7634.     AX = 6F0Ah
  7635. Return: AH = 00h (successful)
  7636.     BX = speed code
  7637.         0Bh for low speed (see #0501)
  7638.         12h for medium speed (see #0501)
  7639.         0Ch for high speed (see #0501)
  7640. Note:    supported by ES, QS, and RS series of HP Vectras
  7641. SeeAlso: AX=6F00h
  7642.  
  7643. (Table 0501)
  7644. Values for HP Vetra CPU speed:
  7645.     Vectra        Low        Medium    High
  7646.     ES        8 MHz         -         8 MHz
  7647.     ES/12        8 MHz         -        12 MHz
  7648.     QS/16, RS/16    8 MHz         -        16 MHz
  7649.     QS/16S        8 MHz         -        16 MHz
  7650.     QS/20, RS/20    8 MHz         -        20 MHz
  7651.     RS/20C        5 MHz        10 MHz    20 MHz
  7652.     RS/25C        5 MHz        12.5 MHz    25 MHz
  7653. --------b-166F0B-----------------------------
  7654. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW
  7655.     AX = 6F0Bh
  7656. Return: AH = 00h (successful)
  7657. Notes:    see AX=6F0Ah for speed definitions
  7658.     supported by ES, QS, and RS series of HP Vectras
  7659. SeeAlso: AX=6F00h,AX=6F0Ah
  7660. --------b-166F0C-----------------------------
  7661. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH
  7662.     AX = 6F0Ch
  7663. Return: AH = 00h (successful)
  7664. Notes:    see AX=6F0Ah for speed definitions
  7665.     supported by ES, QS, and RS series of HP Vectras
  7666. SeeAlso: AX=6F00h,AX=6F0Ah
  7667. --------b-166F0D-----------------------------
  7668. INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER
  7669.     AX = 6F0Dh
  7670. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  7671. Notes:    supported by ES, QS, and RS series of HP Vectras
  7672.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  7673.       input system
  7674. SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F/AH=00h"HP Vectra",INT 6F/AH=0Ah"HP"
  7675. --------b-166F0E-----------------------------
  7676. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER
  7677.     AX = 6F0Eh
  7678.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  7679. Return: AH = status (00h = successful)
  7680. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  7681.       number in case of an interrupt conflict with another application
  7682. Notes:    supported by ES, QS, and RS series of HP Vectras
  7683.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  7684.       input system
  7685. SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F/AH=00h"HP",INT 6F/AH=0Ah"HP"
  7686. --------b-166F0F-----------------------------
  7687. INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING
  7688.     AX = 6F0Fh
  7689. Return: AH = status
  7690.         00h successful
  7691.         FEh cache subsystem is bad
  7692. SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h
  7693. --------b-166F10-----------------------------
  7694. INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING
  7695.     AX = 6F10h
  7696. Return: AH = 00h (successful)
  7697. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h
  7698. --------b-166F11-----------------------------
  7699. INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE
  7700.     AX = 6F11h
  7701. Return: AH = 00h (successful)
  7702.     AL bit 0 = cache state
  7703.         0 cache disabled
  7704.         1 cache enabled
  7705. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h
  7706. --------b-166F12-----------------------------
  7707. INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM
  7708.     AX = 6F12h
  7709. Return: AH = 00h (successful)
  7710. Note:    see AX=6F0Ah for speed definitions
  7711. SeeAlso: AX=6F00h,AX=6F0Ah
  7712. --------K-1670-------------------------------
  7713. INT 16 - FAKEY.COM - INSTALLATION CHECK
  7714.     AH = 70h
  7715. Return: AX = 1954h if installed
  7716. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  7717. --------K-1671-------------------------------
  7718. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  7719.     AH = 71h
  7720.     CX = number of keystrokes
  7721.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  7722. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  7723. SeeAlso: AH=05h,AH=72h
  7724. --------K-1672-------------------------------
  7725. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  7726.     AH = 72h
  7727. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  7728. SeeAlso: AH=71h
  7729. --------K-1673-------------------------------
  7730. INT 16 - FAKEY.COM - PLAY TONES
  7731.     AH = 73h
  7732.     CX = number of tones to play
  7733.     DS:SI -> array of tones (see #0502)
  7734. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  7735. SeeAlso: INT 15/AX=1019h
  7736.  
  7737. Format of FAKEY.COM tone array entries:
  7738. Offset    Size    Description    (Table 0502)
  7739.  00h    WORD    divisor for timer channel 2
  7740.  02h    WORD    duration in clock ticks
  7741. --------i-167463-----------------------------
  7742. INT 16 U - FastJuice - INSTALLATION CHECK
  7743.     AX = 7463h ("tc")
  7744. Return: AX = 5443h ("TC") if installed
  7745. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  7746. SeeAlso: AX=6A6Bh
  7747. --------R-1675-------------------------------
  7748. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  7749.     AH = 75h
  7750.     AL = number of ticks between checks for new screen changes
  7751. --------R-1676-------------------------------
  7752. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  7753.     AH = 76h
  7754.     AL = error checking type
  7755.         00h none
  7756.         01h fast
  7757.         02h slow
  7758. --------R-1677-------------------------------
  7759. INT 16 - pcANYWHERE III - LOG OFF
  7760.     AH = 77h
  7761.     AL = mode
  7762.         00h wait for another call
  7763.         01h leave in Memory Resident Mode
  7764.         02h leave in Automatic Mode
  7765.         FFh leave in current operating mode
  7766. --------U-167761-----------------------------
  7767. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  7768.     AX = 7761h ('wa')
  7769. Return: AX = 5741h ('WA') if installed
  7770. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  7771. SeeAlso: INT 21/AX=7761h
  7772. --------U-167788BX7789-----------------------
  7773. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  7774.     AX = 7788h
  7775.     BX = 7789h
  7776.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  7777. Return: AX = 7789h if installed and signature correct
  7778.     BX = 7788h
  7779.     SI destroyed
  7780. --------R-1679-------------------------------
  7781. INT 16 - pcANYWHERE III - CHECK STATUS
  7782.     AH = 79h
  7783. Return: AX = status
  7784.         FFFFh if resident and active
  7785.         FFFEh if resident but not active
  7786.         FFFDh if in Memory Resident mode
  7787.         FFFCh if in Automatic mode
  7788.         other value if not resident
  7789. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  7790. --------R-167A-------------------------------
  7791. INT 16 - pcANYWHERE III - CANCEL SESSION
  7792.     AH = 7Ah
  7793. --------R-167B00-----------------------------
  7794. INT 16 - pcANYWHERE III - SUSPEND
  7795.     AX = 7B00h
  7796. SeeAlso: AH=79h,AX=7B01h
  7797. --------R-167B01-----------------------------
  7798. INT 16 - pcANYWHERE III - RESUME
  7799.     AX = 7B01h
  7800. SeeAlso: AH=79h,AX=7B00h
  7801. --------R-167C-------------------------------
  7802. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  7803.     AH = 7Ch
  7804. Return: AH = port number
  7805.     AL = baud rate (see #0503)
  7806. SeeAlso: AX=7B00h,AH=7Eh
  7807.  
  7808. (Table 0503)
  7809. Values for pcANYWHERE III baud rate:
  7810.  00h    50 baud
  7811.  01h    75 baud
  7812.  02h    110 baud
  7813.  03h    134.5 baud
  7814.  04h    150 baud
  7815.  05h    300 baud
  7816.  06h    600 baud
  7817.  07h    1200 baud
  7818.  08h    1800 baud
  7819.  09h    2000 baud
  7820.  0Ah    2400 baud
  7821.  0Bh    4800 baud
  7822.  0Ch    7200 baud
  7823.  0Dh    9600 baud
  7824.  0Eh    19200 baud
  7825. SeeAlso: #0213
  7826. --------R-167D-------------------------------
  7827. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  7828.     AH = 7Dh
  7829.     AL = subfunction
  7830.         00h set terminal parameters
  7831.         01h get terminal parameters
  7832.         02h get configuration header and terminal parameters
  7833.     DS:CX -> terminal parameter block
  7834. SeeAlso: AH=7Ch,AH=7Eh
  7835. --------R-167E-------------------------------
  7836. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  7837.     AH = 7Eh
  7838.     AL = subfunction
  7839.         01h port input status
  7840.         Return AX = 0 if no characer ready,
  7841.                AX = 1 if character ready
  7842.         02h port input character
  7843.         Return AL = received character
  7844.         03h port output character in CX
  7845.         11h hang up phone
  7846. SeeAlso: AH=7Ch
  7847. --------R-167F-------------------------------
  7848. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  7849.     AH = 7Fh
  7850.     AL = subfunction
  7851.         00h enable remote keyboard only
  7852.         01h enable host keyboard only
  7853.         02h enable both keyboards
  7854.         08h display top 24 lines
  7855.         09h display bottom 24 lines
  7856.         10h Hayes modem
  7857.         11h other modem
  7858.         12h direct connect
  7859. --------U-1680-------------------------------
  7860. INT 16 - MAKEY.COM - INSTALLATION CHECK
  7861.     AH = 80h
  7862. Return: AX = 1954h if installed
  7863. Program: MAKEY is a utility by System Enhancement Associates
  7864. --------K-1687-------------------------------
  7865. INT 16 - DK.COM v1.03 - INSTALLATION CHECK
  7866.     AH = 87h
  7867. Return: AX = 4A57h ('JW') if installed
  7868. Program: DK.COM is the resident part of a small keyboard macro utility
  7869.       by Digital Mechanics.
  7870. --------U-168765BX4321-----------------------
  7871. INT 16 - AT.COM version 8/26/87 - API
  7872.     AX = 8765h
  7873.     BX = 4321h
  7874.     CX = ??? or FFFFh
  7875.     if CX = FFFFh
  7876.         DX = number of event to remove or FFFFh
  7877. Return: ES:BX -> event record array (see #0504)
  7878. Program: AT.COM is a resident scheduler by Bill Frolik
  7879.  
  7880. Format of AT.COM event record:
  7881. Offset    Size    Description    (Table 0504)
  7882.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  7883.  01h    BYTE    day of date on which to trigger
  7884.  02h    BYTE    month of date on which to trigger
  7885.  03h    BYTE    trigger time, minute
  7886.  04h    BYTE    trigger time, hour
  7887.  05h    WORD    offset of command to be executed
  7888. --------K-1692-------------------------------
  7889. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  7890.     AH = 92h
  7891. Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported
  7892. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  7893.       to determine the highest supported keyboard function
  7894. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  7895.       destroy AH on return from functions higher than AH=12h, returning
  7896.       12h less than was in AH on entry (due to a chain of DEC/JZ
  7897.       instructions)
  7898. SeeAlso: AH=05h"PCjr",AH=A2h,INT 2F/AX=AD80h
  7899. --------U-1699-------------------------------
  7900. INT 16 - SCOUT v5.4 - GET ???
  7901.     AH = 99h
  7902. Return: AX = ABCDh
  7903.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  7904. Program: Scout is a memory-resident file manager by New-Ware
  7905. SeeAlso: AH=9Eh
  7906. --------U-169E-------------------------------
  7907. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  7908.     AH = 9Eh
  7909. Return: AX = ABCDh if installed
  7910. Program: Scout is a memory-resident file manager by New-Ware
  7911. SeeAlso: AH=99h
  7912. --------K-16A2-------------------------------
  7913. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  7914.     AH = A2h
  7915. Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported
  7916. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  7917.       to determine the highest supported keyboard function
  7918. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  7919.       destroy AH on return from functions higher than AH=12h, returning
  7920.       12h less than was in AH on entry (due to a chain of DEC/JZ
  7921.       instructions)
  7922. SeeAlso: AH=05h"PCjr",AH=92h,INT 2F/AX=AD80h
  7923. --------V-16AA-------------------------------
  7924. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  7925.     AH = AAh
  7926.     Various registers set up by high level language.
  7927. Return: Graphics performed
  7928. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  7929.       Modula 2 and others from DataBiten in Sweden. The library is
  7930.       installed as a memory resident driver.
  7931. --------U-16AABBBXEEFF-----------------------
  7932. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  7933.     AX = AABBh
  7934.     BX = EEFFh
  7935. Return: AX = EEFFh if installed
  7936.     BX = AABBh if installed
  7937.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  7938. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  7939.       Co.
  7940. Index:    hotkeys;JORJ
  7941. --------K-16AF20BX4B33-----------------------
  7942. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE
  7943.     AX = AF20h
  7944.     BX = 4B33h ('K3')
  7945. Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
  7946.     ES:BX -> extended keyboard buffer start
  7947.     ES:DX -> extended keyboard buffer end
  7948.     ES:SI -> next keystroke
  7949.     ES:DI -> last keystroke in buffer
  7950.     CX = number of keystrokes in buffer
  7951. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  7952.       Frinke, originally based on the K3 extended German keyboard driver
  7953.       by Martin Gerdes published in c't magazine in 1988
  7954. Note:    this function replaces the identical function AH=20h"K3"
  7955. SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h
  7956. --------K-16AF25BX4B33-----------------------
  7957. INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER
  7958.     AX = AF25h
  7959.     BX = 4B33h ('K3')
  7960.     CX = number of keystrokes to copy
  7961.     ES:SI -> buffer containing keystrokes
  7962. Return: CF clear if successful
  7963.     CF set on error (i.e. buffer full)
  7964.         CX = number of keystrokes NOT transferred
  7965.         ES:SI -> first keystroke not transferred
  7966. Note:    this function replaces the identical function AH=25h"K3"
  7967. SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h
  7968. --------K-16AF4DBX4B33-----------------------
  7969. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION
  7970.     AX = AF4Dh
  7971.     BX = 4B33h ('K3')
  7972. Return: AL = 50h if installed
  7973.         BX = K3 version
  7974.         DX = API version
  7975.         ES:CX -> K3 structure (version-dependent) (see #0505)
  7976. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  7977.       Frinke, originally based on the K3 extended German keyboard driver
  7978.       by Martin Gerdes published in c't magazine in 1988
  7979. SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF82h/BX=4B33h,INT 2F/AX=D44Fh/BX=0000h
  7980. SeeAlso: INT 2F/AX=ED58h
  7981. Index:    installation check;K3PLUS
  7982.  
  7983. Format of internal K3 structure:
  7984. Offset    Size    Description    (Table 0505)
  7985.  00h  3 BYTEs    signature "K3$"
  7986.  03h    BYTE    length of structure, including this byte and signature
  7987.  04h    WORD    compiler switch option flags A (see #0506)
  7988.  06h    WORD    compiler switch option flags B (see #0507)
  7989.  08h    BYTE    internal flags A (see #0508)
  7990.  09h    BYTE    internal flags B (see #0509)
  7991.  0Ah    WORD    DOS version recorded at startup
  7992.  0Ch    WORD    "ActTypeSpeed"
  7993.  0Eh    WORD    last Keyboard-ID sent
  7994.         41ABh translated, 83ABh native (pass-through)
  7995.  10h    WORD    offset of K3TAB Special
  7996.  12h    WORD    offset of K3TAB German
  7997.  14h    WORD    offset of K3TAB Alt
  7998.  16h    WORD    offset of K3TAB AltGr
  7999.  18h    WORD    offset of K3TAB Ctrl
  8000.  1Ah    WORD    offset of K3TAB NPad
  8001.  1Ch    WORD    offset of K3TAB CtrlNPad
  8002.  1Eh    WORD    offset of K3TAB AltNPad
  8003.  20h    WORD    offset of K3TAB ApoTbl or 0000h
  8004.  22h    WORD    offset of K3TAB UmlautTbl or 0000h
  8005.  24h    WORD    offset of K3TAB UmlautTblExp or 0000h
  8006.  26h    WORD    length of video mode table
  8007.  28h    WORD    offset of VidMdTbl or 0000h
  8008.  2Ah    BYTE    '$' end marker
  8009.  
  8010. Bitfields for K3PLUS compiler switch option flags A:
  8011. Bit(s)    Description    (Table 0506)
  8012.  15    GuINT16Fct2 (general use of INT 16 function 2)
  8013.  14    Int15df (INT 15 has to be predefined)
  8014.  13    GuAltNP (general use of Alt Numpad)
  8015.  12    SupAT (ATs+ supported)
  8016.  11    GuINT16Fct3 (general use of INT 16 function 3)
  8017.  10    GuINT16Ret (general use of INT16 bad function return)
  8018.  9-8    Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF)
  8019.  7    ForceMF (force MF decode without read-ID)
  8020.  6    KXlate (translate keys for special keyboard)
  8021.  5    UmlautX (umlaut translation capability included)
  8022.  4    ApoX (translate apostrophe)
  8023.  3    DoINT16 (INT 16 handler included)
  8024.  2    UseCC (CopyCursor included)
  8025.  1-0    UseEB
  8026.     0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved
  8027.  
  8028. Bitfields for K3 compiler switch option flags B:
  8029. Bit(s)    Description    (Table 0507)
  8030.  15-11    reserved (0)
  8031.  10    CtrlSeq (Ctrl macro capability included)
  8032.  9-8    SupINT16fct55FE
  8033.  6    DoInstallCheck (check for double installation)
  8034.  5    SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported)
  8035.  4    SendOut (sound and message output supported)
  8036.  3    SupInt16fct5500 (INT 16/AX=5500h supported)
  8037.  2    GuINT15Fct4F (calls to INT 15/AH=4Fh supported)
  8038.  1-0    UseBufferStart (0=use standard area, 1=set standard area,
  8039.     2=use internal indexes, 3=reserved)
  8040.  
  8041. Bitfields for K3 internal flags A:
  8042. Bit(s)    Description    (Table 0508)
  8043.  7    DoingUmlautExp
  8044.  6    CallINT15fct4F
  8045.  5    Beep1 (requires SendOut set in option flags B)
  8046.  4    ATflag (set for AT, 386, PS/2 Models 50-80)
  8047.  3    XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
  8048.  2    KeyClick
  8049.  1    UmlautExp
  8050.  0    UmlautTrans
  8051.  
  8052. Bitfields for K3 internal flags B:
  8053. Bit(s)    Description    (Table 0509)
  8054.  7-5    reserved
  8055.  4    TranslateE0 enabled
  8056.  3    Boot enabled
  8057.  2    PrintScreen enabled
  8058.  1    Break enabled
  8059.  0    ApoPendingBeep
  8060. --------K-16AF50BX4B33-----------------------
  8061. INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED
  8062.     AX = AF50h
  8063.     BX = 4B33h ('K3')
  8064.     CH = function
  8065.         00h get function flags
  8066.         CL = 00h
  8067.         Return: CX = supported function flags (see #0510)
  8068.         nonzero reserved for extensions
  8069. SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
  8070.  
  8071. Bitfields for K3PLUS supported function list:
  8072. Bit(s)    Description    (Table 0510)
  8073.  0    function 4Dh supported
  8074.  1    function 50h supported
  8075.  2-3    reserved (0)
  8076.  4    function 20h supported
  8077.  5    function 25h supported
  8078.  6    function 51h supported
  8079.  7    reserved (0)
  8080.  8    function 80h supported
  8081.  9    function 81h supported
  8082.  10    function 82h supported
  8083.  11-15    reserved (0)
  8084. --------K-16AF51BX4B33-----------------------
  8085. INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS
  8086.     AX = AF51h
  8087.     BX = 4B33h ('K3')
  8088.     CX = switches
  8089. Return: AL = status
  8090.         00h done
  8091.         CX = previous switch settings
  8092.         01h switch not supported
  8093.         FFh other error
  8094. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
  8095. --------K-16AF80BX4B33-----------------------
  8096. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR
  8097.     AX = AF80h
  8098.     BX = 4B33h ('K3')
  8099. Return: AL = status
  8100.         00h not supported
  8101.         81h if successful
  8102.         ES:CX -> original INT 09 handler
  8103. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
  8104. --------K-16AF81BX4B33-----------------------
  8105. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER
  8106.     AX = AF81h
  8107.     BX = 4B33h ('K3')
  8108. Return: AL = status
  8109.         00h not supported
  8110.         82h if successful
  8111.         ES:CX -> original INT 16 handler
  8112. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
  8113. --------K-16AF82BX4B33-----------------------
  8114. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER
  8115.     AX = AF82h
  8116.     BX = 4B33h ('K3')
  8117. Return: AL = status
  8118.         00h not supported
  8119.         83h if successful
  8120.         ES:CX -> original INT 10 handler
  8121. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  8122.       Frinke, originally based on the K3 extended German keyboard driver
  8123.       by Martin Gerdes published in c't magazine in 1988
  8124. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h
  8125. --------m-16B0B1-----------------------------
  8126. INT 16 - VGARAM v1.00 - INSTALLATION CHECK
  8127.     AX = B0B1h
  8128.     ES:DI -> 6 byte signature "VGARAM"
  8129. Return: AX = B1B0h if installed,
  8130.     DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
  8131. Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
  8132.       not used in text modes available for DOS
  8133. --------K-16CA--BX736B-----------------------
  8134. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  8135.     AH = CAh
  8136.     BX = 736Bh ("sk")
  8137.     CX = 736Bh
  8138.     AL = function
  8139.         00h installation check
  8140.         Return: DX = words available in keyboard buffer
  8141.         01h place keystroke in buffer
  8142.         DX = keystroke (DH = scan code, DL = ASCII character)
  8143.         Return: DX = words available in keyboard buffer
  8144.                 FFFFh on error
  8145.         02h flush STACKEY and BIOS keyboard buffers
  8146. Return: AX = CAFFh if installed
  8147.         BX = segment of resident code
  8148.         CX = STACKEY version (CH = major, CL = minor)
  8149. Program: STACKEY is a shareware keyboard-input faking TSR
  8150. Index:    installation check;STACKEY
  8151. --------V-16CA00BX6570-----------------------
  8152. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  8153.     AX = CA00h
  8154.     BX = 6570h ("ep")
  8155.     CX = 6570h
  8156. Return: AX = CAFFh if installed
  8157.         BX = segment of resident code
  8158.         CX = ??? (0090h)
  8159. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette
  8160.       settings permanent across mode switches
  8161. SeeAlso: AX=CA00h/BX=7670h
  8162. --------V-16CA00BX7670-----------------------
  8163. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  8164.     AX = CA00h
  8165.     BX = 7670h ("vp")
  8166.     CX = 7670h
  8167. Return: AX = CAFFh if installed
  8168.         BX = segment of resident code
  8169.         CX = ??? (0090h)
  8170. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette
  8171.       settings permanent across mode switches
  8172. SeeAlso: AX=CA00h/BX=6570h
  8173. --------U-16CB00-----------------------------
  8174. INT 16 - PUPClip v1.12+ - INSTALLATION CHECK
  8175.     AX = CB00h
  8176. Return: BX = 4342h if installed
  8177.         AX = version (AH = major version, AL = BCD minor version)
  8178. Program: PUPClip is the freeware PopUP Clipboard for DOS and Windows DOS
  8179.      sessions by SkullC0DEr
  8180. SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB04h,AX=CB05h,AX=CB06h,AX=CB08h
  8181. SeeAlso: INT 2F/AX=1701h
  8182. --------U-16CB01-----------------------------
  8183. INT 16 - PUPClip v1.12+ - GET CLIPBOARD CURSOR POSITION
  8184.     AX = CB01h
  8185. Return: BL = column (0-79)
  8186.     BH = row (0-49)
  8187. SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h
  8188. --------U-16CB02-----------------------------
  8189. INT 16 - PUPClip v1.12+ - SET CLIPBOARD CURSOR POSITION
  8190.     AX = CB02h
  8191.     BL = column (0-79)
  8192.     BH = row (0-49)
  8193. Return: CF clear if successful
  8194.     CF set on error (invalid position)
  8195. SeeAlso: AX=CB00h,AX=CB01h,AX=CB04h
  8196. --------U-16CB03-----------------------------
  8197. INT 16 - PUPClip v1.12+ - GET CHARACTER FROM CURRENT CLIPBOARD CURSOR POSITION
  8198.     AX = CB03h
  8199. Return: BL = ASCII character at current position
  8200. SeeAlso: AX=CB00h,AX=CB02h,AX=CB04h,INT 2F/AX=1705h
  8201. --------U-16CB04-----------------------------
  8202. INT 16 - PUPClip v1.12+ - WRITE CHARACTER TO CURRENT CLIPBOARD CURSOR POSITION
  8203.     AX = CB04h
  8204.     BL = ASCII character to store
  8205. SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h,AX=CB05h,INT 2F/AX=1703h
  8206. --------U-16CB05-----------------------------
  8207. INT 16 - PUPClip v1.12+ - CLEAR CLIPBOARD CONTENTS
  8208.     AX = CB05h
  8209. Return: nothing
  8210. SeeAlso: AX=CB00h,AX=CB04h,AX=CB06h,AX=CB07h,INT 2F/AX=1702h
  8211. --------U-16CB06-----------------------------
  8212. INT 16 - PUPClip v1.12+ - SCROLL UP CLIPBOARD CONTENTS
  8213.     AX = CB06h
  8214. Return: nothing
  8215. SeeAlso: AX=CB00h,AX=CB05h,AX=CB07h
  8216. --------U-16CB07-----------------------------
  8217. INT 16 - PUPClip v1.12+ - SCROLL DOWN CLIPBOARD CONTENTS
  8218.     AX = CB07h
  8219. Return: nothing
  8220. SeeAlso: AX=CB00h,AX=CB05h,AX=CB06h
  8221. --------U-16CB08-----------------------------
  8222. INT 16 - PUPClip v1.12+ - POP UP
  8223.     AX = CB08h
  8224. Return: CF clear if successful
  8225.     CF set on error (unsupported video mode)
  8226. SeeAlso: AX=CB00h
  8227. --------U-16D724CX00CB-----------------------
  8228. INT 16 U - APCAL v3.20 - GET ???
  8229.     AX = D724h
  8230.     CX = 00CBh
  8231. Return: AX = 0000h
  8232.     BX = 0000h
  8233.     DX:CX -> ??? or 0000h:0000h
  8234. Program: APCAL is an optionally-resident shareware appointment calendar by
  8235.       Gamma Software
  8236. SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  8237. --------U-16D724CX00CC-----------------------
  8238. INT 16 U - APCAL v3.20 - GET ???
  8239.     AX = D724h
  8240.     CX = 00CCh
  8241. Return: AX = 0000h
  8242.     BX = 0000h
  8243.     DX:CX -> ??? (apparently an internal data area)
  8244. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  8245. --------U-16D724CX00CD-----------------------
  8246. INT 16 U - APCAL v3.20 - GET ???
  8247.     AX = D724h
  8248.     CX = 00CDh
  8249. Return: AX = ??? (5345h seen)
  8250. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  8251. --------v-16DD--------------------------
  8252. INT 16 - VIRUS - "Frumble" - INSTALLATION CHECK
  8253.     AH = DDh
  8254. Return: AL = DDh if resident
  8255. SeeAlso: INT 13/AX=FD50h,INT 21/AX=010Fh,INT 21/AX=0B56h
  8256. --------s-16DFDF-----------------------------
  8257. INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK
  8258.     AX = DFDFh
  8259. Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e.
  8260.       "06/18/93" if installed
  8261. --------b-16E000-----------------------------
  8262. INT 16 - AMI BIOS - BIOS-FLASH Interface - GET VERSION NUMBER
  8263.     AX = E000h
  8264. Return: CF clear if successful
  8265.         AL = FAh
  8266.         BX = version number (BCD) (0200h = v2.00)
  8267.     CF set on error (not implemented)
  8268. Notes:    this interface is available on AMI BIOSes built from AMI core version
  8269.       8/8/93 (HiFlex BIOS) or 11/15/93 (WinBIOS) or later
  8270.     the "Meningitis" virus uses this API when attacking a system equipped
  8271.       with an AMI BIOS; it is supposedly able to write itself into the
  8272.       Flash ROM and thus make itself part of the BIOS
  8273. SeeAlso: AX=E001h,AX=E004h,AX=E006h,AX=E008h,AX=E00Ah,AX=E00Bh,AX=E0FFh
  8274. --------b-16E001-----------------------------
  8275. INT 16 - AMI BIOS - BIOS-FLASH Interface - GET CHIPSET SAVE/RESTORE SIZE
  8276.     AX = E001h
  8277. Return: CF clear if successful
  8278.         AL = FAh
  8279.         BX = number of bytes required to save chipset configuration
  8280.     CF set on error
  8281. SeeAlso: AX=E000h,AX=E002h,AX=E003h
  8282. --------b-16E002-----------------------------
  8283. INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE CHIPSET STATUS & PREPARE CHPSET
  8284.     AX = E002h
  8285.     ES:DI -> buffer for storing chipset status
  8286. Return: CF clear if successful
  8287.         AL = FAh
  8288.     CF set on error
  8289. SeeAlso: AX=E000h,AX=E001h,AX=E003h
  8290. --------b-16E003-----------------------------
  8291. INT 16 - AMI BIOS - BIOS-FLASH Interface -  RESTORE CHIPSET STATUS
  8292.     AX = E003h
  8293.     ES:DI -> buffer in which chipset status was previously stored
  8294. Return: CF clear if successful
  8295.         AL = FAh
  8296.     CF set on error
  8297. SeeAlso: AX=E000h,AX=E001h,AX=E002h
  8298. --------b-16E004-----------------------------
  8299. INT 16 - AMI BIOS - BIOS-FLASH Interface - LOWER PROGRAMMING VOLTAGE Vpp
  8300.     AX = E004h
  8301. Return: CF clear if successful
  8302.         AL = FAh
  8303.     CF set on error
  8304. Note:    this function does not return until the voltage level stabilizes
  8305. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  8306. --------b-16E005-----------------------------
  8307. INT 16 - AMI BIOS - BIOS-FLASH Interface - RAISE PROGRAMMING VOLTAGE Vpp
  8308.     AX = E005h
  8309. Return: CF clear if successful
  8310.         AL = FAh
  8311.     CF set on error
  8312. Note:    this function does not return until the voltage level stabilizes
  8313. SeeAlso: AX=E000h,AX=E004h,AX=E007h
  8314. --------b-16E006-----------------------------
  8315. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE PROTECT
  8316.     AX = E006h
  8317. Return: CF clear if successful
  8318.         AL = FAh
  8319.     CF set on error
  8320. Note:    this function performs any delay required to allow the Flash ROM to
  8321.       stabilize in the write-protected state
  8322. SeeAlso: AX=E000h,AX=E004h,AX=E007h
  8323. --------b-16E007-----------------------------
  8324. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE ENABLE
  8325.     AX = E007h
  8326. Return: CF clear if successful
  8327.         AL = FAh
  8328.     CF set on error
  8329. Note:    this function performs any delay required to allow the Flash ROM to
  8330.       stabilize in the write-enabled state
  8331. SeeAlso: AX=E000h,AX=E005h,AX=E006h,AX=E008h
  8332. --------b-16E008-----------------------------
  8333. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH SELECT
  8334.     AX = E008h
  8335. Return: CF clear if successful
  8336.         AL = FAh
  8337.     CF set on error
  8338. Desc:    select the Flash ROM if the system contains both EPROM and Flash ROM
  8339. Note:    this function performs any delay required to allow the Flash ROM to
  8340.       stabilize in the selected state; if no EPROM is present, this
  8341.       function always returns successfully
  8342. SeeAlso: AX=E000h,AX=E007h,AX=E009h
  8343. --------b-16E009-----------------------------
  8344. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH DE-SELECT
  8345.     AX = E009h
  8346. Return: CF clear if successful
  8347.         AL = FAh
  8348.     CF set on error
  8349. Desc:    select the EPROM if the system contains both EPROM and Flash ROM
  8350. Note:    this function performs any delay required to allow the Flash ROM to
  8351.       stabilize in the de-selected state; if no EPROM is present, this
  8352.       function always returns successfully
  8353. SeeAlso: AX=E000h,AX=E006h,AX=E008h
  8354. --------b-16E00A-----------------------------
  8355. INT 16 - AMI BIOS - BIOS-FLASH Interface - VERIFY ALLOCATED MEMORY
  8356.     AX = E00Ah
  8357.     BX = number of paragraphs
  8358.     ES = starting segment of memory
  8359. Return: CF clear if successful
  8360.         AL = FAh
  8361.     CF set on error
  8362. Desc:    determine whether the specified memory may be used for flash
  8363.       programming
  8364. Note:    always returns error if BX is zero on entry
  8365. SeeAlso: AX=E000h,AX=E00Bh
  8366. --------b-16E00B-----------------------------
  8367. INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE INTERNAL CACHE STATUS
  8368.     AX = E00Bh
  8369.     ES:DI -> buffer for internal cache status (minimum 4Kbytes)
  8370. Return: CF clear if successful
  8371.         AL = FAh
  8372.     CF set on error
  8373. Note:    always returns error if the hardware does not contain internal
  8374.       cache or this call is made in protected mode
  8375. SeeAlso: AX=E000h,AX=E00Ah,AX=E00Ch
  8376. --------b-16E00C-----------------------------
  8377. INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE INTERNAL CACHE STATUS
  8378.     AX = E00Ch
  8379.     ES:DI -> buffer containing internal cache status (minimum 4Kbytes)
  8380. Return: CF clear if successful
  8381.         AL = FAh
  8382.     CF set on error
  8383. Note:    always returns error if the hardware does not contain internal
  8384.       cache or this call is made in protected mode
  8385. SeeAlso: AX=E000h,AX=E00Bh
  8386. --------t-16E0E0-----------------------------
  8387. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  8388.     AX = E0E0h
  8389. Return: AX = 1F1Fh if installed
  8390.         DWORD 0040h:00F0h -> last data block in TSR list (see #0512)
  8391. Note:    the returned TSR list provides support for communication among TSRs
  8392.       built with TurboPower's Turbo Professional and Object Professional
  8393.       libraries for Turbo Pascal
  8394. SeeAlso: AX=F0F0h
  8395. --------b-16E0FF-----------------------------
  8396. INT 16 - AMI BIOS - BIOS-FLASH Interface - GENERATE CPU RESET
  8397.     AX = E0FFh
  8398. Return: never
  8399. SeeAlso: AX=E000h,INT 14/AH=17h"FOSSIL"
  8400. --------U-16ED--BHED-------------------------
  8401. INT 16 - BORLAND TURBO LIGHTNING - API
  8402.     AH = EDh
  8403.     BH = EDh
  8404.     BL = function
  8405.         00h installation check
  8406.         Return: AX = 5205h
  8407.             CH = major version
  8408.             CL = minor version
  8409.         01h identical to function 00h???
  8410.         02h get resident data segment
  8411.         Return: AX = data segment of resident portion
  8412.         03h get resident ???
  8413.         Return: AX = offset of some buffer in resident code seg
  8414.         04h redefine auxiliary dictionary
  8415.         DS:SI -> counted filename string
  8416.         Return: AL = result code
  8417.         05h select active environment
  8418.         AL = environment (00h to 0Ch)
  8419.         Return: AX = status
  8420.                 0000h if OK
  8421.                 0001h if out of range
  8422.         06h toggle AutoProof???
  8423.         AL = state (00h off, 01h on)
  8424.         07h ???
  8425.         08h ???
  8426.         AL = char???
  8427.         CX = ???
  8428.         DX = ???
  8429.         Return: AX = 0, 1 or 2
  8430.         09h ???
  8431.         0Ah ???
  8432.         CX = ???
  8433.         DX = ???
  8434.         Return: AX = ???
  8435.         0Bh check dictionary integrity???
  8436.         DS:SI -> counted dictionary filename string
  8437.         Return: AX = 0, 40h, 80h
  8438.         0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
  8439.         DS:SI -> counted string to check
  8440.         Return: AH = 0
  8441.             AL = result code
  8442.                00h string found in dictionary
  8443.                20h string begins more than one word
  8444.                40h string not found
  8445.         0Dh set ???
  8446.         (sets an internal flag)
  8447.         0Eh spellcheck string (RAM dictionary only)
  8448.         DS:SI -> counted string to check
  8449.         Return: AH = 00h
  8450.             AL = result code
  8451.                 00h string found in dictionary
  8452.                 01h string not found
  8453.                 02h ???
  8454.         0Fh ???
  8455.         10h ???
  8456. Notes:    AX in general returns an error code from most functions.
  8457. Index:    installation check;Turbo Lightning
  8458. --------U-16EF-------------------------------
  8459. INT 16 - CALCULATOR - INSTALLATION CHECK
  8460.     AH = EFh
  8461. Return: AX = 0088h if installed
  8462. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  8463.       Marek Kosznik
  8464. --------b-16F0-------------------------------
  8465. INT 16 - Compaq 386 and newer - SET CPU SPEED
  8466.     AH = F0h
  8467.     AL = speed code (see #0511)
  8468.     if AL=09h,
  8469.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  8470. Note:    also supported by some versions of AMI BIOS dated June 1992 or later;
  8471.       speed codes 0 or 1 are used for Low Speed, 2 for High Speed
  8472. SeeAlso: AH=F1h,AH=F3h
  8473.  
  8474. (Table 0511)
  8475. Values for speed code:
  8476.  00h    equivalent to 6 MHz 80286 (COMMON)
  8477.  01h    equivalent to 8 MHz 80286 (FAST)
  8478.  02h    full 16 MHz (HIGH)
  8479.  03h    toggles between 8 MHz-equivalent and speed set by system board switch
  8480.       (AUTO or HIGH)
  8481.  08h    full 16 MHz except 8 MHz-equivalent during floppy disk access
  8482.  09h    specify speed directly
  8483. --------t-16F0F0-----------------------------
  8484. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  8485.     AX = F0F0h
  8486. Return: AX = 0F0Fh if installed
  8487.         ES:DI -> last data block in TSR list (see #0512)
  8488. Note:    the returned TSR list provides support for communication among TSRs
  8489.       built with TurboPower's Turbo Professional and Object Professional
  8490.       libraries for Turbo Pascal
  8491. SeeAlso: AX=E0E0h
  8492.  
  8493. Format of TurboPower TSR data block:
  8494. Offset    Size    Description    (Table 0512)
  8495.  00h    DWORD    pointer to program tag (counted ASCII string)
  8496.  04h    WORD    interface version number (0400h)
  8497.  06h    DWORD    pointer to command entry point
  8498.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  8499.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  8500. ---swappable TSRs only---
  8501.  12h    DWORD    pointer to swapping data
  8502.  16h    DWORD    pointer to user data
  8503.     more???
  8504. --------b-16F1-------------------------------
  8505. INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
  8506.     AH = F1h
  8507. Return: AL = speed code (see #0511)
  8508.     if AL = 09h, CX = speed code
  8509. Note:    also supported by some versions of AMI BIOS dated June 1992 or later
  8510. SeeAlso: AH=F0h,AH=F3h
  8511. --------b-16F2-------------------------------
  8512. INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
  8513.     AH = F2h
  8514. Return: AL = type
  8515.         00h if 11-bit AT keyboard is in use
  8516.         01h if 9-bit PC keyboard is in use
  8517.     AH = 00h (04/08/93 system ROM)
  8518. --------b-16F3-------------------------------
  8519. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  8520.     AH = F3h
  8521.     AL = new limit
  8522.         00h limit is 6 Mhz
  8523.         01h limit is 8 Mhz/6 Mhz
  8524. SeeAlso: AH=F0h,AH=F1h
  8525. --------U-16F398-----------------------------
  8526. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  8527.     AX = F398h
  8528. Return: AX = 6A73h ("js")
  8529.     BH = BIOS scan code of current hot key
  8530.     BL = ASCII code of current hot key
  8531. Note:    NG.EXE was written by John Socha
  8532. --------b-16F400-----------------------------
  8533. INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
  8534.     AX = F400h
  8535. Return: AH = E2h (*)
  8536.     AL = status
  8537.         00h not present
  8538.         01h enabled
  8539.         02h disabled
  8540.     CX = cache memory size
  8541.         bit 15:    cache size information is NOT valid
  8542.         bits 14-0:    cache memory size in kilobytes
  8543.     DH = cache write technology
  8544.         bit 7:    cache write information is NOT valid
  8545.         bits 6-1:    reserved (0)
  8546.         bit 0:    0 = Write-through caching
  8547.             1 = Write-back caching
  8548.     DL = cache type
  8549.         bit 7:    cache type information is NOT valid
  8550.         bits 6-1:    reserved (0)
  8551.         bit 0:    0 = Direct mapped
  8552.             1 = Two-way set-associative
  8553. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  8554.     many (most) BIOSes return a modified AH when called for an unsupported
  8555.       or non-keyboard function (typically, the highest supported keyboard
  8556.       function [normally 12h] is subtracted from the original AH)
  8557. SeeAlso: AX=F401h,AX=F402h
  8558. --------b-16F401-----------------------------
  8559. INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
  8560.     AX = F401h
  8561. Return: AX = E201h
  8562. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  8563.     many (most) BIOSes return a modified AH when called for an unsupported
  8564.       or non-keyboard function (typically, the highest supported keyboard
  8565.       function [normally 12h] is subtracted from the original AH)
  8566. SeeAlso: AX=F400h,AX=F402h
  8567. --------b-16F402-----------------------------
  8568. INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
  8569.     AX = F402h
  8570. Return: AX = E202h
  8571. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  8572.     many (most) BIOSes return a modified AH when called for an unsupported
  8573.       or non-keyboard function (typically, the highest supported keyboard
  8574.       function [normally 12h] is subtracted from the original AH)
  8575. SeeAlso: AX=F400h,AX=F401h
  8576. --------v-16FA00DX5945-----------------------
  8577. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
  8578.     AX = FA00h
  8579.     DX = 5945h
  8580. Return: CF clear
  8581.     DI = 4559h
  8582.     BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
  8583.         FFFFh if disabled
  8584. Note:    MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
  8585. SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  8586. --------v-16FA01DX5945-----------------------
  8587. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  8588.     AX = FA01h
  8589.     DX = 5945h
  8590. Return: CF clear if successful
  8591.     DI = 4559h
  8592. SeeAlso: AX=FA00h
  8593. --------v-16FA02DX5945-----------------------
  8594. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
  8595.     AX = FA02h
  8596.     DX = 5945h
  8597.     BL = new parameter flags (see #0513)
  8598. Return: CF clear
  8599.     DI = 4559h
  8600.     CL = old value of parameter flags
  8601.  
  8602. Bitfields for VSAFE/VWATCH parameter flags:
  8603. Bit(s)    Description    (Table 0513)
  8604.  7    Protect executable files
  8605.  6    Protect FD boot sector
  8606.  5    Protect HD boot sector
  8607.  4    Boot sector viruses
  8608.  3    Check executable files
  8609.  2    General write protect
  8610.  1    Resident
  8611.  0    HD Low level format
  8612. --------v-16FA03DX5945-----------------------
  8613. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  8614.     AX = FA03h
  8615.     DX = 5945h
  8616. Return: CF clear
  8617.     DI = 4559h
  8618.     AX = 0002h
  8619. --------v-16FA04DX5945-----------------------
  8620. INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
  8621.     AX = FA04h
  8622.     DX = 5945h
  8623. Return: CF clear
  8624.     DI = 4559h
  8625.     BL = hotkey disable flag (nonzero if hotkey disabled)
  8626. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  8627. SeeAlso: AX=FA00h,AX=FA05h
  8628. --------v-16FA05DX5945-----------------------
  8629. INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
  8630.     AX = FA05h
  8631.     DX = 5945h
  8632.     BL = new value of hotkey disable flag (nonzero to disable hotkey)
  8633. Return: CF clear
  8634.     DI = 4559h
  8635. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  8636. SeeAlso: AX=FA00h,AX=FA04h
  8637. --------v-16FA06DX5945-----------------------
  8638. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
  8639.     AX = FA06h
  8640.     DX = 5945h
  8641. Return: CF clear
  8642.     DI = 4559h
  8643.     BL = test status
  8644.         00h don't monitor network drives (default for VWATCH v2.1)
  8645.         FFh monitor network drives (default for VSAFE v2.0)
  8646.     CL = ??? (only VSAFE 2.0)
  8647. SeeAlso: AX=FA07h
  8648. --------v-16FA07DX5945-----------------------
  8649. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
  8650.     AX = FA07h
  8651.     DX = 5945h
  8652.     BL = new state
  8653.         00h don't monitor
  8654.         01h monitor network drives
  8655. Return: CF clear
  8656.     DI = 4559h
  8657. Note:    VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
  8658. SeeAlso: AX=FA00h,AX=FA06h
  8659. --------v-16FA08DX5945-----------------------
  8660. INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
  8661.     AX = FA08h
  8662.     DX = 5945h
  8663. Return: CF clear
  8664.     DI = 4559h
  8665.     AX = ??? (0002h)
  8666.     BX = version (BH=major, BL=two-digit minor)
  8667. Note:    this function is not supported by the PC Tools 9.0 VSAFE v2.0
  8668. SeeAlso: AX=FA00h,AX=FA06h
  8669. --------U-16FE55-----------------------------
  8670. INT 16 U - PC Tools v8+ programs - GET ???
  8671.     AX = FE55h
  8672.     CX = segment of resident program or 0000h for last loaded
  8673.     DX = 0000h
  8674. Return: DX = resident code segment (unchanged if CX=0000h on entry)
  8675.     AX = ??? or 0000h
  8676. Note:    this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
  8677.       and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
  8678.       seem to hook it merely to return the same AX as the CPTASK loaded
  8679.       prior to them returned
  8680. --------U-16FEA4-----------------------------
  8681. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
  8682.     AX = FEA4h
  8683. Return: nothing
  8684. Note:    this function is identical to AX=FFA4h, and is implemented by the same
  8685.       code in DESKTOP
  8686. SeeAlso: AX=FFA4h
  8687. --------U-16FEC6-----------------------------
  8688. INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
  8689.     AX = FEC6h
  8690.     BL = new state (00h enabled, nonzero disabled)
  8691. Return: nothing
  8692. Desc:    specify whether CPSCHED API calls other than this one and AX=FE55h will
  8693.       be honored
  8694. --------U-16FED3-----------------------------
  8695. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  8696.     AX = FED3h
  8697.     DS:SI -> 92-byte data record for ???
  8698. Return: ???
  8699. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  8700.       code in DESKTOP
  8701. SeeAlso: AX=FFD3h
  8702. --------U-16FEDC-----------------------------
  8703. INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
  8704.     AX = FEDCh
  8705. Return: AX,DX destroyed
  8706. Index:    uninstall;CPSCHED
  8707. --------U-16FEEFCX0000-----------------------
  8708. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  8709.     AX = FEEFh
  8710.     CX = 0000h
  8711. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  8712.         BX = segment of resident portion
  8713.         DX = (CPSCHED v8.0) resident CS
  8714. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  8715.       code in DESKTOP
  8716. SeeAlso: AX=FFEFh
  8717. --------U-16FEF1-----------------------------
  8718. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  8719.     AX = FEF1h
  8720.     BX = ???
  8721. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  8722.     DX = 5555h
  8723. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  8724.       code in DESKTOP
  8725. SeeAlso: AX=FFF1h
  8726. --------K-16FF-------------------------------
  8727. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  8728.     AH = FFh
  8729.     DX = scan code
  8730. Return: AL = status
  8731.         00h success
  8732.         01h failure
  8733. Program: KBUF is a keyboard buffer expander by Mark Adler
  8734. SeeAlso: AH=05h
  8735. --------V-16FF-------------------------------
  8736. INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
  8737.     AH = FFh
  8738. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  8739.     AL+1 = Zoom interrupt number
  8740.     BX = hotkey
  8741. Notes:    the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  8742.       the default hot key is F10
  8743.     not all vendors include the Tseng TSR which supports these functions
  8744. SeeAlso: INT 61"OPTIMA"
  8745. Index:    hotkeys;OPTIMA 1024 VGA
  8746. ----------16FF--BH00-------------------------
  8747. INT 16 - FREEZE.COM - INSTALLATION CHECK
  8748.     AH = FFh
  8749.     BH = 00h
  8750. Return: BH = FFh if installed
  8751. Program: FREEZE is a PC Magazine utility
  8752. --------d-16FF70BX0000-----------------------
  8753. INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
  8754.     AX = FF70h
  8755.     BX = 0000h
  8756.     CX = 4C69h ('Li')
  8757.     DX = 6E6Bh ('nk')
  8758. Return: AX = 0000h
  8759.     CX = 4350h ('CP')
  8760.     DH = major version
  8761.     DL = minor version
  8762. Program: DRIVEMAP is a redirector which allows drives on computers connected
  8763.       over the parallel or serial ports to appear as local drives
  8764. SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h
  8765. --------d-16FF70BX0001-----------------------
  8766. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  8767.     AX = FF70h
  8768.     BX = 0001h
  8769.     DL = ???
  8770. Return: AX = ???
  8771.     DH = ???
  8772. SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h
  8773. --------d-16FF70BX0002-----------------------
  8774. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  8775.     AX = FF70h
  8776.     BX = 0002h
  8777.     CX = ???
  8778.     DX = ???
  8779. Return: AX = ??? or FFFEh/FFFFh on error
  8780.     DL = ???
  8781. BUG:    DRIVEMAP will branch to random locations for BX values other than
  8782.       those listed above for v8.0-9.0 because a) the incorrect register is
  8783.       range-tested, resulting in BX=0003h-5CD6h being accepted as valid
  8784.       function numbers, and b) the conditional which branches on invalid
  8785.       function numbers jumps to the following instruction, becoming a NOP
  8786. SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
  8787. Index:    installation check;DRIVEMAP
  8788. --------T-16FF80BX0000-----------------------
  8789. INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
  8790.     AX = FF80h
  8791.     BX = 0000h
  8792.     CX = 0000h
  8793.     DX = 0000h
  8794. Return: CX = 5555h if installed
  8795. Program: CPTASK is a task switcher by Central Point Software
  8796. --------T-16FF80BX0001-----------------------
  8797. INT 16 U - PC Tools v8+ CPTASK - GET ???
  8798.     AX = FF80h
  8799.     BX = 0001h
  8800.     ???
  8801. Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
  8802.     BX = ??? (PSP segment of resident code???)
  8803. --------T-16FF80BX0002-----------------------
  8804. INT 16 U - PC Tools v8+ CPTASK - GET ???
  8805.     AX = FF80h
  8806.     BX = 0002h
  8807. Return: DX:SI -> ???
  8808. --------T-16FF80BX0003-----------------------
  8809. INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
  8810.     AX = FF80h
  8811.     BX = 0003h
  8812. Return: AX = flags (see #0514)
  8813. SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h
  8814.  
  8815. Bitfields for CPTASK flags:
  8816. Bit(s)    Description    (Table 0514)
  8817.  10    ???
  8818.  13    ???
  8819.  14    ???
  8820.  15    ???
  8821. --------T-16FF80BX0004-----------------------
  8822. INT 16 U - PC Tools v8+ CPTASK - SET ???
  8823.     AX = FF80h
  8824.     BX = 0004h
  8825.     CX = new value of ???
  8826. Return: ???
  8827. Note:    this function also sets bit 14 of the flags word returned by
  8828.       AX=FF80h/BX=0003h
  8829. --------T-16FF80BX0005-----------------------
  8830. INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
  8831.     AX = FF80h
  8832.     BX = 0005h
  8833. Return: AX = number of active tasks???
  8834. --------T-16FF80BX0006-----------------------
  8835. INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
  8836.     AX = FF80h
  8837.     BX = 0006h
  8838. Return: AX = old state (0000h clear, 0001h set)
  8839. Note:    the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h
  8840. --------T-16FF80BX0007-----------------------
  8841. INT 16 U - PC Tools v8+ CPTASK - ???
  8842.     AX = FF80h
  8843.     BX = 0007h
  8844.     ES:DI -> ???
  8845.     ???
  8846. Return: ???
  8847. --------T-16FF80BX0008-----------------------
  8848. INT 16 U - PC Tools v8+ CPTASK - ???
  8849.     AX = FF80h
  8850.     BX = 0008h
  8851.     ???
  8852. Return: ???
  8853. --------T-16FF80BX0009-----------------------
  8854. INT 16 U - PC Tools v8+ CPTASK - GET ???
  8855.     AX = FF80h
  8856.     BX = 0009h
  8857. Return: CL = ???
  8858.     CH = ??? (01h or 02h)
  8859. --------T-16FF80BX000A-----------------------
  8860. INT 16 U - PC Tools v9+ CPTASK - SET ???
  8861.     AX = FF80h
  8862.     BX = 000Ah
  8863.     DS:SI -> 128-byte buffer containing ???
  8864. --------T-16FF80BX000B-----------------------
  8865. INT 16 U - PC Tools v9+ CPTASK - SET ???
  8866.     AX = FF80h
  8867.     BX = 000Bh
  8868.     DX = index of ??? task (1-10)
  8869. --------T-16FF80BX000C-----------------------
  8870. INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
  8871.     AX = FF80h
  8872.     BX = 000Ch
  8873.     CX = new delay time in minutes
  8874. --------T-16FF80BX4350-----------------------
  8875. INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
  8876.     AX = FF80h
  8877.     BX = 4350h ('CP')
  8878.     CX = 5354h ('ST')
  8879. Return: never returns; terminates all tasks and exits to program originally
  8880.       calling CPTASK
  8881. --------U-16FF90-----------------------------
  8882. INT 16 U - PC Tools v8+ DESKTOP - ???
  8883.     AX = FF90h
  8884.     ???
  8885. Return: ???
  8886. Note:    available only when popped up
  8887. --------U-16FF91-----------------------------
  8888. INT 16 U - PC Tools v7+ DESKTOP - ???
  8889.     AX = FF91h
  8890.     ???
  8891. Return: AX = 0000h
  8892. Note:    calls AX=FFFDh after ???
  8893. SeeAlso: AX=FF92h,AX=FFFDh
  8894. --------U-16FF92-----------------------------
  8895. INT 16 U - PC Tools v7+ DESKTOP - ???
  8896.     AX = FF92h
  8897.     ???
  8898. Return: AX = 0000h
  8899. Note:    like AX=FF91h, but temporarily sets ??? to 3
  8900. SeeAlso: AX=FF91h,AX=FFFDh
  8901. --------U-16FF93-----------------------------
  8902. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  8903.     AX = FF93h
  8904. --------U-16FF94-----------------------------
  8905. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  8906.     AX = FF94h
  8907.     CX = ??? (default 0017h)
  8908. --------U-16FF95-----------------------------
  8909. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  8910.     AX = FF95h
  8911.     BX = ???
  8912. --------U-16FF96-----------------------------
  8913. INT 16 U - PC Tools v7+ DESKTOP - ???
  8914.     AX = FF96h
  8915.     CL = ???
  8916. Return: AX = ???
  8917. --------U-16FF97-----------------------------
  8918. INT 16 U - PC Tools v7+ DESKTOP - ???
  8919.     AX = FF97h
  8920.     DS:DX -> buffer for ??? (see #0515)
  8921. Return: ???
  8922.  
  8923. Format of PC Tools DESKTOP buffer:
  8924. Offset    Size    Description    (Table 0515)
  8925.  00h 48 BYTEs    ???
  8926.  30h 128 BYTEs    ???
  8927. --------U-16FF98-----------------------------
  8928. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  8929.     AX = FF98h
  8930.     DX = byte offset in file of overlay header (see #0516)
  8931. Return: BX = file handle for DESK.OVL file
  8932. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  8933.       overlay header, and seek to the offset specified by the header
  8934.  
  8935. Format of PC Tools DESKTOP overlay header:
  8936. Offset    Size    Description    (Table 0516)
  8937.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  8938.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  8939. --------U-16FF99-----------------------------
  8940. INT 16 U - PC Tools v7+ DESKTOP - ???
  8941.     AX = FF99h
  8942.     ???
  8943. Return: ???
  8944. --------U-16FF9A-----------------------------
  8945. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  8946.     AX = FF9Ah
  8947. Return: ES:BX -> name of current color scheme
  8948. Note:    available even if not popped up
  8949. --------U-16FF9B-----------------------------
  8950. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  8951.     AX = FF9Bh
  8952. Return: ???
  8953. Note:    sounds triple-length beep
  8954. --------T-16FF9C-----------------------------
  8955. INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
  8956.     AX = FF9Ch
  8957.     BL = function
  8958.         00h set ??? pointer
  8959.         DS:SI -> ???
  8960.         01h clear pointer to 0000h:0000h
  8961. ----------16FF9D-----------------------------
  8962. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  8963.     AX = FF9Dh
  8964.     ES:BX -> ??? word
  8965. Return: ???
  8966. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  8967.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  8968.       flag is always cleared if ES=0000h.
  8969. --------U-16FF9E-----------------------------
  8970. INT 16 U - PC Tools v7+ DESKTOP - ???
  8971.     AX = FF9Eh
  8972.     DL = ???
  8973.         bit 7: ???
  8974.         bits 6-0: function number??? (00h,01h,other)
  8975.     ???
  8976. Return: ???
  8977. --------U-16FFA1-----------------------------
  8978. INT 16 U - PC Tools v7+ DESKTOP - ???
  8979.     AX = FFA1h
  8980.     ???
  8981. Return: ???
  8982. Note:    same as AX=FFA2h, except ??? set to FFh
  8983. SeeAlso: AX=FFA2h
  8984. --------U-16FFA2-----------------------------
  8985. INT 16 U - PC Tools v7+ DESKTOP - ???
  8986.     AX = FFA2h
  8987.     ???
  8988. Return: ???
  8989. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  8990. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  8991. --------y-16FFA3BX0000-----------------------
  8992. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
  8993.     AX = FFA3h
  8994.     BX = 0000h
  8995.     CX = 0000h
  8996. Return: AX = segment of resident code
  8997.     BX = 5555h
  8998.     CX = 5555h
  8999. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  9000. SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h
  9001. --------y-16FFA3BX0001-----------------------
  9002. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  9003.     AX = FFA3h
  9004.     BX = 0001h
  9005.     CX = 0001h
  9006. Return: AX:BX -> ???
  9007.     CX = BX
  9008. --------y-16FFA3BX0002-----------------------
  9009. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  9010.     AX = FFA3h
  9011.     BX = 0002h
  9012.     CX = 0002h
  9013. Return: AX = ??? (0 or 1)
  9014.     CX = BX = AX
  9015. --------y-16FFA3BX0003-----------------------
  9016. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  9017.     AX = FFA3h
  9018.     BX = 0003h
  9019.     CX = 0003h
  9020. Return: AX = ??? (0 or 1)
  9021.     CX = BX = AX
  9022. --------y-16FFA3BX0004-----------------------
  9023. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  9024.     AX = FFA3h
  9025.     BX = 0004h
  9026.     CX = 0004h
  9027. SeeAlso: AX=FFA3h/BX=0005h
  9028. --------y-16FFA3BX0005-----------------------
  9029. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  9030.     AX = FFA3h
  9031.     BX = 0005h
  9032.     CX = 0005h
  9033. SeeAlso: AX=FFA3h/BX=0004h
  9034. --------y-16FFA3BX0006-----------------------
  9035. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  9036.     AX = FFA3h
  9037.     BX = 0006h
  9038.     CX = 0006h
  9039.     DX = current PSP segment as known to DOS??? or 0000h
  9040. --------d-16FFA3BXFFA3-----------------------
  9041. INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
  9042.     AX = FFA3h
  9043.     BX = FFA3h
  9044.     CX = FFA3h
  9045. Return: BX = CX = 5555h if installed
  9046.         AX = resident code segment
  9047. Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
  9048.       access indicator on the screen; in v7 and v8, this function was
  9049.       provided by DATAMON
  9050. Note:    DSKLIGHT chains to the previous handler if BX or CX is not FFA3h
  9051. --------U-16FFA4-----------------------------
  9052. INT 16 U - PC Tools v7-8 DESKTOP - ???
  9053.     AX = FFA4h
  9054. Return: ???
  9055. Notes:    available even when not popped up
  9056.     sets unknown flag if ??? conditions met
  9057. SeeAlso: AX=FEA4h
  9058. --------c-16FFA5CX1111-----------------------
  9059. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  9060.     AX = FFA5h
  9061.     CX = 1111h
  9062. Return: CH = 00h if installed
  9063.         ES:DI -> internal data (see #0517)
  9064.         CL = cache state
  9065.         01h enabled
  9066.         02h disabled
  9067. SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  9068.  
  9069. Format of PC-Cache internal data:
  9070. Offset    Size    Description    (Table 0517)
  9071. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  9072.         each byte is either blank (20h) or drive letter (41h-54h)
  9073.  -8    BYTE    ???
  9074.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  9075.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  9076.  -3   3 BYTEs    ???
  9077. --------c-16FFA5CXAAAA-----------------------
  9078. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  9079.     AX = FFA5h
  9080.     CX = AAAAh
  9081. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  9082. SeeAlso: AX=FFA5h/CX=CCCCh
  9083. --------c-16FFA5CXCCCC-----------------------
  9084. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  9085.     AX = FFA5h
  9086.     CX = CCCCh
  9087. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  9088. Note:    delayed writes are automatically disabled on EXECing
  9089.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  9090.       however, delayed writes are not automatically reenabled upon the
  9091.       program's termination in v6.
  9092. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  9093. --------c-16FFA5CXDDDD-----------------------
  9094. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  9095.     AX = FFA5h
  9096.     CX = DDDDh
  9097. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  9098. --------c-16FFA5CXEEEE-----------------------
  9099. INT 16 - PC-Cache v6+ - ENABLE CACHE
  9100.     AX = FFA5h
  9101.     CX = EEEEh
  9102. SeeAlso: AX=FFA5h/CX=DDDDh
  9103. --------c-16FFA5CXFFFF-----------------------
  9104. INT 16 - PC-Cache v6+ - FLUSH CACHE
  9105.     AX = FFA5h
  9106.     CX = FFFFh
  9107. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  9108. --------U-16FFA6-----------------------------
  9109. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  9110.     AX = FFA6h
  9111. Return: DS:SI -> ???
  9112. Note:    available only when popped up
  9113. --------U-16FFA7-----------------------------
  9114. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH
  9115.     AX = FFA7h
  9116. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  9117. --------U-16FFA8-----------------------------
  9118. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  9119.     AX = FFA8h
  9120.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  9121.     ???
  9122. Return: ???
  9123. Notes:    available only when popped up
  9124.     strings copied into internal buffer, among other actions
  9125. --------U-16FFA9-----------------------------
  9126. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING
  9127.     AX = FFA9h
  9128. Return: DS:SI -> version string
  9129. --------U-16FFAA-----------------------------
  9130. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  9131.     AX = FFAAh
  9132.     ???
  9133. Return: ???
  9134. Note:    available only when popped up
  9135. --------U-16FFAB-----------------------------
  9136. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS???
  9137.     AX = FFABh
  9138. Return: DS:SI -> editor setting strings???
  9139. --------U-16FFAC-----------------------------
  9140. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  9141.     AX = FFACh
  9142.     DL = ???
  9143. Note:    available only when popped up
  9144. --------U-16FFAD-----------------------------
  9145. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  9146.     AX = FFADh
  9147.     DL = ???
  9148. --------U-16FFAE-----------------------------
  9149. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  9150.     AX = FFAEh
  9151. Return: AL = ???
  9152. --------U-16FFAF-----------------------------
  9153. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  9154.     AX = FFAFh
  9155.     DL = ???
  9156. --------U-16FFB0-----------------------------
  9157. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  9158.     AX = FFB0h
  9159.     BL = ???
  9160. --------U-16FFB1-----------------------------
  9161. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  9162.     AX = FFB1h
  9163.     ???
  9164. Return: ???
  9165. --------U-16FFB2-----------------------------
  9166. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  9167.     AX = FFB2h
  9168. Return: DS:SI -> ???
  9169. --------U-16FFB3-----------------------------
  9170. INT 16 U - PC Tools v5.5-8.0 DESKTOP - ???
  9171.     AX = FFB3h
  9172.     ???
  9173. Return: ???
  9174. Note:    available only when popped up
  9175. --------U-16FFB4-----------------------------
  9176. INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG
  9177.     AX = FFB4h
  9178. Note:    available only when popped up
  9179. SeeAlso: AX=FFBBh
  9180. --------U-16FFB5-----------------------------
  9181. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS
  9182.     AX = FFB5h
  9183.     BX = window specifier (000Fh to 0019h) (see #0518)
  9184.     DX = 0000h get, nonzero = set
  9185.     ES:DI -> window parameter buffer (see #0519)
  9186. SeeAlso: AX=FFCBh
  9187.  
  9188. (Table 0518)
  9189. Values for PC Tools DESKTOP window specifier:
  9190.  000Fh    comm/FAX
  9191.  0014h    hotkey selection
  9192.  0015h    ASCII table
  9193.  0016h    system colors menu
  9194.  
  9195. Format of PC Tools DESKTOP window parameters:
  9196. Offset    Size    Description    (Table 0519)
  9197.  00h    BYTE    rows in window, not counting frame
  9198.  01h    BYTE    columns in window, not counting frame
  9199.  02h    BYTE    row number of top of window
  9200.  03h    BYTE    2*column number of left of window
  9201.  04h    BYTE    character attribute for ???
  9202.  05h    BYTE    character attribute for background/border
  9203.  06h    BYTE    character attribute for ???
  9204.  07h    DWORD    pointer to ??? on screen
  9205.  0Bh  4 BYTEs    ???
  9206.  0Fh    BYTE    nonzero if window may be resized
  9207. Note:    if running in monochrome mode, character attributes at offsets 04h to
  9208.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  9209.       are changed to 07h on reading
  9210. --------U-16FFB6-----------------------------
  9211. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  9212.     AX = FFB6h
  9213. Return: AH = ???
  9214.     AL = ???
  9215. --------U-16FFB7-----------------------------
  9216. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ???
  9217.     AX = FFB7h
  9218.     BX = direction
  9219.         0000h copy to buffer
  9220.         else  copy from buffer
  9221.     DS:SI -> 70-byte buffer with ???
  9222. Return: data copied
  9223. Note:    available only when popped up under v6.0+
  9224. --------U-16FFB8-----------------------------
  9225. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET???
  9226.     AX = FFB8h
  9227.     BH = subfunction
  9228.         00h get
  9229.         Return: BL = old value of ???
  9230.             CL = old value of ??? (v6.0+)
  9231.             CH = old value of ??? (v6.0+)
  9232.         nonzero set
  9233.         BL = new value for ???
  9234.         CL = new value for ??? (v6.0+)
  9235.         CH = new value for ??? (v6.0+)
  9236.         DH = ???
  9237.         Return: AL = old value replaced by CL (v6.0+)
  9238.             AH = old value replaced by CH (v6.0+)
  9239. --------U-16FFB9-----------------------------
  9240. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9241.     AX = FFB9h
  9242.     ???
  9243. Return: AX = ???
  9244.     CX = ???
  9245.     DS:SI -> ???
  9246.     ES:DI -> ???
  9247. --------U-16FFBA-----------------------------
  9248. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9249.     AX = FFBAh
  9250.     ???
  9251. Return: AX = ???
  9252. Note:    available only when popped up
  9253. --------U-16FFBB-----------------------------
  9254. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG
  9255.     AX = FFBBh
  9256. Note:    available only when popped up
  9257. SeeAlso: AX=FFB4h
  9258. --------U-16FFBC-----------------------------
  9259. INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN???
  9260.     AX = FFBCh
  9261. --------U-16FFBD-----------------------------
  9262. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES
  9263.     AX = FFBDh
  9264.     ???
  9265. Return: ???
  9266. --------U-16FFBE-----------------------------
  9267. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9268.     AX = FFBEh
  9269.     ???
  9270. Return: ???
  9271. Note:    available only when popped up
  9272. --------U-16FFBF-----------------------------
  9273. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9274.     AX = FFBFh
  9275.     BX = DOS file handle to write on
  9276.     ???
  9277. Return: ???
  9278. Note:    available only when popped up
  9279. --------U-16FFC0-----------------------------
  9280. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9281.     AX = FFC0h
  9282.     ???
  9283. Return: AX = 0000h if successful
  9284.     AX = FFFFh on error
  9285. Note:    available only when popped up
  9286. --------U-16FFC1-----------------------------
  9287. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9288.     AX = FFC1h
  9289.     BL = ???
  9290.     ES:DI -> data structure (see #0520)
  9291.     ???
  9292. Return: AX = ???
  9293. Note:    available only when popped up
  9294. SeeAlso: AX=FFC2h,AX=FFC3h
  9295.  
  9296. Format of PC Tools DESKTOP data structure:
  9297. Offset    Size    Description    (Table 0520)
  9298.  00h    WORD    ???
  9299.  02h    WORD    ???
  9300.  04h    WORD    ???
  9301.  06h    WORD    ???
  9302.  08h    WORD    ???
  9303.  0Ah    BYTE    ???
  9304.  0Bh    BYTE    ??? (zero/nonzero)
  9305. ---v7.1---
  9306.  0Ch    WORD    ???
  9307.  0Eh    BYTE    ???
  9308.  0Fh    WORD    ???
  9309.  11h    WORD    ???
  9310.     ???
  9311. --------U-16FFC2-----------------------------
  9312. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9313.     AX = FFC2h
  9314.     BL = ???
  9315.     ES:DI -> data structure (see #0520)
  9316.     ???
  9317. Return: AH = ???
  9318.     CX = ???
  9319.     DH = ???
  9320.     DL = ???
  9321. Note:    available only when popped up
  9322. SeeAlso: AX=FFC1h,AX=FFC3h
  9323. --------U-16FFC3-----------------------------
  9324. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9325.     AX = FFC3h
  9326.     BL = ???
  9327.     ES:DI -> data structure (see #0520)
  9328.     ???
  9329. Return: AH = ???
  9330.     CX = ???
  9331.     DH = ???
  9332.     DL = ???
  9333. Note:    available only when popped up
  9334. SeeAlso: AX=FFC1h,AX=FFC2h
  9335. --------U-16FFC4-----------------------------
  9336. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  9337.     AX = FFC4h
  9338. Return: AL = ???
  9339.     BX = segment of scratch space???
  9340.     CX = segment of stored screen data (section covered by window???)
  9341.     DX = segment of window parameters for ???
  9342.     ES:BP -> ???
  9343. Note:    available only when popped up in versions prior to 6.0
  9344. --------U-16FFC5-----------------------------
  9345. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT
  9346.     AX = FFC5h
  9347. Return: BL = Desktop state
  9348.         00h if nonresident
  9349.         nonzero if loaded resident
  9350. Note:    available only when popped up; should call AX=FFEFh first to ensure
  9351.       that DESKTOP is active
  9352. SeeAlso: AX=FFEFh,AX=FFF3h
  9353. --------U-16FFC6-----------------------------
  9354. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  9355.     AX = FFC6h
  9356.     BL = new value for ???
  9357. --------U-16FFC7-----------------------------
  9358. INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW
  9359.     AX = FFC7h
  9360.     ???
  9361. Return: ???
  9362. --------U-16FFC8-----------------------------
  9363. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  9364.     AX = FFC8h
  9365. Return: DS:SI -> ???
  9366. Note:    valid only while popped up
  9367. --------U-16FFC9-----------------------------
  9368. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD
  9369.     AX = FFC9h
  9370.     DS:SI -> characters to store in clipboard
  9371.     CX = size in bytes
  9372. Return: CF set on error
  9373. Notes:    available only when popped up
  9374.     while copying, bytes of 00h and 0Ah are skipped
  9375. --------U-16FFCA-----------------------------
  9376. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  9377.     AX = FFCAh
  9378.     DX = ???
  9379. Return: AX destroyed
  9380. Note:    available only when popped up
  9381. --------U-16FFCB-----------------------------
  9382. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS???
  9383.     AX = FFCBh
  9384.     DX = window specifier???
  9385. Return: AX destroyed
  9386. Note:    available only when popped up
  9387. SeeAlso: AX=FFB5h
  9388. --------U-16FFCC-----------------------------
  9389. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  9390.     AX = FFCCh
  9391.     DS:SI -> ASCIZ string
  9392. Return: AX = ???
  9393.     CX = ???
  9394.     ES:DI -> address past last character displayed (v5.1/5.5)
  9395.           -> ??? on menu bar (v6.0)
  9396. --------U-16FFCD-----------------------------
  9397. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9398.     AX = FFCDh
  9399.     DS:DX -> ???
  9400. Return: ???
  9401. Note:    available only when popped up
  9402. --------U-16FFCE-----------------------------
  9403. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS
  9404.     AX = FFCEh
  9405.     CX = ???
  9406. Return: nothing???
  9407. --------U-16FFCF-----------------------------
  9408. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE
  9409.     AX = FFCFh
  9410. Note:    available only when popped up
  9411. --------U-16FFD0-----------------------------
  9412. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT???
  9413.     AX = FFD0h
  9414.     ???
  9415. Return: ???
  9416. Note:    available only when popped up
  9417. --------U-16FFD1-----------------------------
  9418. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU
  9419.     AX = FFD1h
  9420. Return: BX = number of copies
  9421.     DX = destination
  9422.         00h cancel
  9423.         01h LPT1
  9424.         02h LPT2
  9425.         03h LPT3
  9426.         04h COM1
  9427.         05h COM2
  9428.         06h disk file
  9429. Note:    available only when popped up
  9430. --------U-16FFD2-----------------------------
  9431. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9432.     AX = FFD2h
  9433.     BX = ???
  9434. Return: BL = ???
  9435. Note:    available only when popped up
  9436. --------U-16FFD3-----------------------------
  9437. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9438.     AX = FFD3h
  9439.     DS:SI -> 92-byte data record for ???
  9440. Return: ???
  9441. SeeAlso: AX=FED3h
  9442. --------U-16FFD4BH3C-------------------------
  9443. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE
  9444.     AX = FFD4h
  9445.     BH = 3Ch create file (with no attributes)
  9446.          3Dh open file
  9447.          41h delete file
  9448.     BL = access mode
  9449.          00h read only
  9450.          01h write only
  9451.          02h read/write
  9452.     DS:SI -> ASCIZ filename
  9453. Return: BX = file handle
  9454.         0000h on error
  9455. Note:    operation is attempted in (in order) the directory from which the
  9456.       desktop was started/run???, the directory specified with the
  9457.       filename, X:\PCTOOLS\, and X:\
  9458. --------U-16FFD5-----------------------------
  9459. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9460.     AX = FFD5h
  9461.     ???
  9462. Return: ???
  9463. Note:    available only when popped up
  9464. --------U-16FFD6-----------------------------
  9465. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9466.     AX = FFD6h
  9467.     BX = ???
  9468.     CX = ???
  9469.     DX = offset in ???
  9470.     ???
  9471. Return: ???
  9472. Note:    available only when popped up
  9473. --------U-16FFD7-----------------------------
  9474. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9475.     AX = FFD7h
  9476.     ???
  9477. Return: BL = ???
  9478. Note:    available only when popped up
  9479. --------U-16FFD8-----------------------------
  9480. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE
  9481.     AX = FFD8h
  9482.     DS:BX -> ASCIZ filename
  9483. Return: BX = file handle
  9484.         0000h on error
  9485. Note:    pops up confirmation menu if file already exists
  9486.     only available when popped up???
  9487. --------U-16FFD9-----------------------------
  9488. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  9489.     AX = FFD9h
  9490. Return: AX = ???
  9491. Note:    available only when popped up
  9492. --------U-16FFDA-----------------------------
  9493. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED
  9494.     AX = FFDAh
  9495.     DS:SI -> ??? (v5.1/5.5 only)
  9496. Return: DS:SI -> filename
  9497. --------U-16FFDB-----------------------------
  9498. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  9499.     AX = FFDBh
  9500.     BL = ???
  9501. Note:    available only when popped up
  9502. --------U-16FFDC-----------------------------
  9503. INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK
  9504.     AX = FFDCh
  9505. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  9506.       original values
  9507. Index:    uninstall;PC Tools DESKTOP
  9508. --------U-16FFDDBX0000-----------------------
  9509. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  9510.     AX = FFDDh
  9511.     BX = 0000h
  9512. Return: CX = 5555h
  9513.     DX = 5555h if PCShell installed in resident mode
  9514. --------U-16FFDDBX0001-----------------------
  9515. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  9516.     AX = FFDDh
  9517.     BX = 0001h
  9518. Return: CF clear if request successful (PCShell will pop up)
  9519.     CF set on error
  9520. SeeAlso: AX=FFDDh/BX=0003h
  9521. --------U-16FFDDBX0002-----------------------
  9522. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  9523.     AX = FFDDh
  9524.     BX = 0002h
  9525. Return: AL =
  9526.         00h ???
  9527.         01h ???
  9528. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  9529.       awaits a keystroke, and aborts the current process
  9530. --------U-16FFDDBX0003-----------------------
  9531. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  9532.     AX = FFDDh
  9533.     BX = 0003h
  9534. SeeAlso: AX=FFDDh/BX=0001h
  9535. --------U-16FFDDBX0004-----------------------
  9536. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  9537.     AX = FFDDh
  9538.     BX = 0004h
  9539. Return: CF clear if successful
  9540.         DS:SI -> ???
  9541. --------U-16FFDDBX0005-----------------------
  9542. INT 16 U - PC Tools v5.1+ PCShell API - ???
  9543.     AX = FFDDh
  9544.     BX = 0005h
  9545.     ???
  9546. Return: ???
  9547. Note:    resets various variables if certain conditions are met
  9548. --------U-16FFDDBX0006-----------------------
  9549. INT 16 U - PC Tools v5.1+ PCShell API - ???
  9550.     AX = FFDDh
  9551.     BX = 0006h
  9552.     ???
  9553. Return: ???
  9554. Note:    resets various variables if certain conditions are met
  9555. --------U-16FFDDBX0007-----------------------
  9556. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  9557.     AX = FFDDh
  9558.     BX = 0007h
  9559. Return: CF clear if successful
  9560. SeeAlso: AX=FFDDh/BX=0008h
  9561. --------U-16FFDDBX0008-----------------------
  9562. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  9563.     AX = FFDDh
  9564.     BX = 0008h
  9565. Return: CF undefined
  9566. SeeAlso: AX=FFDDh/BX=0007h
  9567. --------U-16FFDDBX0009-----------------------
  9568. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  9569.     AX = FFDDh
  9570.     BX = 0009h
  9571. Return: CF clear if successful
  9572.         DS:SI -> list of pointers (see #0521)
  9573.  
  9574. Format of PC Tools PCShell returned pointer list:
  9575. Offset    Size    Description    (Table 0521)
  9576.  00h    WORD    offset of WORD containing ???
  9577.  02h    WORD    offset of name of program to execute
  9578.  04h    WORD    offset of 80-byte buffer for ???
  9579.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  9580.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  9581. --------U-16FFDDBX000A-----------------------
  9582. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  9583.     AX = FFDDh
  9584.     BX = 000Ah
  9585. Return: CX = 5555h if running
  9586.     DX = 5555h
  9587. Note:    also sets a flag
  9588. --------U-16FFDDBX000B-----------------------
  9589. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  9590.     AX = FFDDh
  9591.     BX = 000Bh
  9592.     ???
  9593. Return: CX = 5555h if PCRUN active
  9594.     DX = 5555h
  9595. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  9596. --------U-16FFDE-----------------------------
  9597. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU
  9598.     AX = FFDEh
  9599.     DS:DX -> menu description (must be on a paragraph boundary)
  9600. Return: AX = ???
  9601.         AL seems to be the number of the selected button
  9602. Note:    available only when popped up
  9603. SeeAlso: AX=FFEEh
  9604. --------U-16FFDF-----------------------------
  9605. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9606.     AX = FFDFh
  9607.     ???
  9608. Return: ???
  9609. --------U-16FFE0-----------------------------
  9610. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9611.     AX = FFE0h
  9612.     CX = ???
  9613.     DX = ???
  9614. Note:    available only when popped up
  9615. --------U-16FFE1-----------------------------
  9616. INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP
  9617.     AX = FFE1h
  9618. --------U-16FFE2-----------------------------
  9619. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9620.     AX = FFE2h
  9621.     DX = ???
  9622. Return: ???
  9623. Note:    available only when popped up
  9624. --------U-16FFE3-----------------------------
  9625. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER
  9626.     AX = FFE3h
  9627.     BL = character to print to currently open printer or print file
  9628. Return: CF set on error
  9629. Note:    available only when popped up
  9630. SeeAlso: INT 17/AH=00h
  9631. --------U-16FFE4-----------------------------
  9632. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9633.     AX = FFE4h
  9634.     DX = segment of ???
  9635. Return: ???
  9636. Note:    available only when popped up
  9637. --------U-16FFE5-----------------------------
  9638. INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU
  9639.     AX = FFE5h
  9640.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  9641.     DX = segment of window parameters???
  9642. Return: AX = DOS file handle for file
  9643.         DS:DX -> filename???
  9644.         FFFFh if function cancelled by user
  9645. Note:    available only when popped up
  9646. SeeAlso: AX=FFDAh
  9647. --------U-16FFE6-----------------------------
  9648. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE
  9649.     AX = FFE6h
  9650. Return: AX = 0000h if no key available
  9651.          else  BIOS keycode
  9652. Notes:    available only when popped up
  9653.     invokes INT 28 idle interrupt before checking for key
  9654. --------U-16FFE7-----------------------------
  9655. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9656.     AX = FFE7h
  9657.     BX = segment of ???
  9658. Return: ???
  9659. Note:    available only when popped up
  9660. --------U-16FFE8-----------------------------
  9661. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER
  9662.     AX = FFE8h
  9663.     CX = number
  9664.     DH = attribute
  9665.     DS:SI -> destination for ASCII number
  9666. Return: DS:SI buffer filled in with alternating characters and attributes
  9667. --------U-16FFE9-----------------------------
  9668. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST???
  9669.     AX = FFE9h
  9670. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  9671. Note:    available only when popped up
  9672. --------U-16FFEA-----------------------------
  9673. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING
  9674.     AX = FFEAh
  9675.     DS:SI -> counted string (count byte followed by string)
  9676. Return: ???
  9677. Note:    available only when popped up
  9678. --------U-16FFEB-----------------------------
  9679. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9680.     AX = FFEBh
  9681.     ???
  9682. Return: ???
  9683. --------U-16FFEC-----------------------------
  9684. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY
  9685.     AX = FFECh
  9686.     DS:SI -> FAR routine to ???
  9687.     BX = ???
  9688.     ???
  9689. Return: AX = keystroke
  9690.         FFFFh if F10 pressed to go to menu
  9691. Notes:    available only when popped up
  9692.     invokes INT 28 while waiting for keystroke
  9693.     F10 is hotkey to Desktop menu
  9694. Index:    hotkeys;PC Tools DESKTOP
  9695. --------U-16FFED-----------------------------
  9696. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  9697.     AX = FFEDh
  9698. Return: AX = ???
  9699. Note:    available only when popped up
  9700. --------U-16FFEE-----------------------------
  9701. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS
  9702.     AX = FFEEh
  9703.     DS:SI -> pulldown menu system description (see #0522)
  9704. Return: AX destroyed
  9705. Notes:    available only when popped up
  9706.     if the accessory does not need any menu items of its own, it should
  9707.       call AX=FFFAh instead
  9708. SeeAlso: AX=FFF7h,AX=FFFAh
  9709.  
  9710. Format of PC Tools DESKTOP pulldown menu system description:
  9711. Offset    Size    Description    (Table 0522)
  9712.  00h    WORD    offset of menu bar contents (counted string)
  9713.  02h    WORD    number of items on menu bar
  9714.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  9715.  0Eh 10 BYTEs    which character to highlight in each menu item (01h=first)
  9716.  18h    WORD    offset of first menu definition (see #0523)
  9717.  1Ah    WORD    offset of second menu definition
  9718.     ...
  9719.  
  9720. Format of PC Tools DESKTOP menu definition:
  9721. Offset    Size    Description    (Table 0523)
  9722.  00h    WORD    offset of menu contents (see #0524)
  9723.  02h    WORD    number of entries in menu
  9724.  04h    for each entry:
  9725.         Offset    Size    Description
  9726.          00h    BYTE    scancode of Alt-key to invoke entry
  9727.          01h    BYTE    character to highlight (01h=first, etc)
  9728.          02h    WORD    offset of FAR routine to handle selection
  9729.  
  9730. Format of PC Tools DESKTOP menu contents:
  9731. Offset    Size    Description    (Table 0524)
  9732.  00h    BYTE    number of lines in menu
  9733.  01h    BYTE    width of menu
  9734.  02h  N BYTEs    counted strings, one for each line in menu
  9735. --------U-16FFEFCX0000-----------------------
  9736. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK
  9737.     AX = FFEFh
  9738.     CX = 0000h
  9739. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  9740.         BX = segment of resident portion
  9741.         AX = ??? (v5.1/5.5 only)
  9742. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  9743. --------U-16FFF0-----------------------------
  9744. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  9745.     AX = FFF0h
  9746.     DX = ???
  9747. Return: AX destroyed
  9748. Note:    available only when popped up
  9749. --------U-16FFF1BX0000-----------------------
  9750. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK
  9751.     AX = FFF1h
  9752.     BX = 0000h  leave ??? flag as is
  9753.         nonzero set ??? flag
  9754. Return: CX = 5555h if installed
  9755.     DX = 5555h
  9756. --------U-16FFF2-----------------------------
  9757. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE
  9758.     AX = FFF2h
  9759.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  9760.         or help text
  9761. Return: AX destroyed
  9762. Notes:    available only when popped up
  9763.     if the specified string does not start with '[', it is displayed
  9764.       centered on the bottom line, else the function key labels are shown
  9765. --------U-16FFF3-----------------------------
  9766. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP
  9767.     AX = FFF3h
  9768. Note:    releases any EMS being used; restores video mode, page, and cursor
  9769.       shape; and restores interrupt vectors
  9770. SeeAlso: AX=FFC5h,AX=FFEFh
  9771. Index:    uninstall;PC Tools DESKTOP
  9772. --------U-16FFF4-----------------------------
  9773. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  9774.     AX = FFF4h
  9775.     ???
  9776. Return: ???
  9777. Note:    available only when popped up
  9778. SeeAlso: AX=FFF6h
  9779. --------U-16FFF5-----------------------------
  9780. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY
  9781.     AX = FFF5h
  9782. Return: ES:BX -> screen attributes data structure (see #0525)
  9783.     AL = ??? (v6.0+)
  9784.  
  9785. Format of PC Tools DESKTOP attribute data structure:
  9786. Offset    Size    Description    (Table 0525)
  9787.  -1    BYTE    attribute for desktop background
  9788.  00h    BYTE    attribute for normal characters on desktop menu
  9789.  01h    BYTE    attribute for highlighted characters on desktop menu
  9790.  02h  5 BYTEs    ???
  9791.  07h    BYTE    attribute for dialog boxes
  9792.  08h 15 BYTEs    ???
  9793.  17h    BYTE    attribute for message boxes
  9794. --------U-16FFF6-----------------------------
  9795. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR
  9796.     AX = FFF6h
  9797.     DS = segment of editor buffer structure (see #0526)
  9798.     BX = ???
  9799.     DX = segment of window parameters structure (see #0519)
  9800. Return: ???
  9801. Note:    available only when popped up
  9802. SeeAlso: AX=FFF4h
  9803.  
  9804. Format of PC Tools DESKTOP editor buffer structure:
  9805. Offset    Size    Description    (Table 0526)
  9806.  00h    WORD    offset of current cursor position in buffer segment
  9807.  02h  2 BYTEs    ???
  9808.  04h    WORD    offset of beginning of file data in buffer segment
  9809.  06h 10 BYTEs    ???
  9810.  10h  N BYTEs    ASCIZ name of file being edited
  9811. --------U-16FFF7-----------------------------
  9812. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY???
  9813.     AX = FFF7h
  9814.     DS:SI -> ???
  9815.     ???
  9816. Return: ???
  9817. Notes:    available only when popped up
  9818.     performs input processing on the menu bar set up with AX=FFEEh
  9819. SeeAlso: AX=FFEEh,AX=FFFBh
  9820. --------U-16FFF8-----------------------------
  9821. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW
  9822.     AX = FFF8h
  9823.     DS:0000h -> window parameters structure (see #0519)
  9824.     DS:BX -> DWORD to store address of ??? on screen
  9825. Return: ???
  9826. --------U-16FFF9-----------------------------
  9827. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE
  9828.     AX = FFF9h
  9829.     ES:BX -> FAR routine to redisplay the utility's window
  9830. Note:    available only when popped up
  9831. --------U-16FFFA-----------------------------
  9832. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS
  9833.     AX = FFFAh
  9834. Notes:    available only when popped up
  9835.     adds the "Window" option to the "Desktop" option which is the only one
  9836.       available when no accessories are active.  Unlike AX=FFEEh, no
  9837.       additional menu items are added between "Desktop" and "Window"
  9838. SeeAlso: AX=FFEEh,AX=FFFBh
  9839. --------U-16FFFB-----------------------------
  9840. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR
  9841.     AX = FFFBh
  9842. Return: ???
  9843. Notes:    available only when popped up
  9844.     performs input processing on the standard menu bar set up with AX=FFFAh
  9845. SeeAlso: AX=FFF7h
  9846. --------U-16FFFC-----------------------------
  9847. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR
  9848.     AX = FFFCh
  9849. Return: ES:BX -> hotkey table (see #0527)
  9850.     DS:DX = original INT 09 vector
  9851.  
  9852. Format of PC Tools DESKTOP hotkey table:
  9853. Offset    Size    Description    (Table 0527)
  9854.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  9855.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  9856.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  9857.  06h  2 BYTEs    scancode/shift state for screen autodial key
  9858. --------U-16FFFD-----------------------------
  9859. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ???
  9860.     AX = FFFDh
  9861. Return: AX destroyed
  9862. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  9863. SeeAlso: AX=FF91h,AX=FF92h
  9864. --------M-16FFFE-----------------------------
  9865. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR
  9866.     AX = FFFEh
  9867. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  9868. --------M-16FFFF-----------------------------
  9869. INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR
  9870.     AX = FFFFh
  9871. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  9872. --------!---Section--------------------------
  9873.